This is so confusing. "Literals are untyped", but there’s a “BooleanLiteral”, which is obviously of type Boolean.
-Kenny > On Nov 21, 2016, at 2:49 AM, Adrian Zubarev via swift-users > <swift-users@swift.org> wrote: > > In general this is a correct behaviour, because literals in Swift are > untyped. Int does not have any initializer for a Bool so the compiler tries > to find a type that might conforms to ExpressibleByBooleanLiteral for all > possible initializer of Int (Int.init(_: TYPE)). This resolution decides to > go with NSNumber in your case?! > > The thing is, when you write Int(a > b), you’re passing a Bool and not a > literal anymore. Here the compiler does not fallback to NSNumber anymore and > reports you an error, because Int.init(_: Bool) does not exist. > > > > > -- > Adrian Zubarev > Sent with Airmail > > Am 21. November 2016 um 04:48:35, Rick Mann via swift-users > (swift-users@swift.org) schrieb: > >> It seems I can't do this: >> >> let r = Int(a > b) >> >> but I can do it with a literal: >> >> let r = Int(true) >> >> I'd like to do this to implement signum without branching, but perhaps >> that's not possible. >> >> -- >> Rick Mann >> rm...@latencyzero.com >> >> >> _______________________________________________ >> swift-users mailing list >> swift-users@swift.org >> https://lists.swift.org/mailman/listinfo/swift-users > > _______________________________________________ > swift-users mailing list > swift-users@swift.org > https://lists.swift.org/mailman/listinfo/swift-users _______________________________________________ swift-users mailing list swift-users@swift.org https://lists.swift.org/mailman/listinfo/swift-users