> On Nov 21, 2016, at 13:14 , Nevin Brackett-Rozinsky 
> <nevin.brackettrozin...@gmail.com> wrote:
> 
> I don’t see what there is to be confused about.
> 
> A “literal” is literally a bunch of characters in source code. The compiler 
> interprets those characters as representing whatever type is appropriate to 
> the context.
> 
> For the case at hand, a boolean literal can be interpreted as any type which 
> conforms to the ExpressibleByBooleanLiteral protocol. If the context provides 
> no information, the compiler defaults to interpreting a boolean literal as 
> representing a Bool.
> 
> The situation is similar for every other kind of literal. For example, “2” 
> defaults to being interpreted as an Int, but if the context requires a Double 
> then it will be interpreted as a Double. The text “2” does not have a type of 
> its own.

Except it does, because if I write

        let a = 2

a is of type Int (at least, according to Xcode's code completion). But this 
gives inconsistent results:

        let t = true

        let a = Int(true)
        let b = Int(t)          //  Error

I find this to be very inconsistent and confusing.

> 
> Nevin
> 
> 
> On Mon, Nov 21, 2016 at 3:55 PM, Rick Mann via swift-users 
> <swift-users@swift.org> wrote:
> 
> > On Nov 21, 2016, at 09:46 , Kenny Leung via swift-users 
> > <swift-users@swift.org> wrote:
> >
> > This is so confusing. "Literals are untyped", but there’s a 
> > “BooleanLiteral”, which is obviously of type Boolean.
> 
> Agreed.
> 
> --
> Rick Mann
> rm...@latencyzero.com
> 
> 
> _______________________________________________
> swift-users mailing list
> swift-users@swift.org
> https://lists.swift.org/mailman/listinfo/swift-users
> 


-- 
Rick Mann
rm...@latencyzero.com


_______________________________________________
swift-users mailing list
swift-users@swift.org
https://lists.swift.org/mailman/listinfo/swift-users

Reply via email to