Saagar Jha This isn’t quite how optional chaining in Swift works; see the Swift Programming Guide <https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/OptionalChaining.html>, specifically “Linking Multiple Levels of Chaining". Basically, `s?.characters.count` works because `s.characters` isn’t Optional. You only use ? on properties that are Optional.
> On Aug 1, 2016, at 10:26, Stephen Schaub via swift-users > <swift-users@swift.org> wrote: > > With optional chaining, if I have a Swift variable > > var s: String? > > s might contain nil, or a String wrapped in an Optional. So, I tried this to > get its length: > > let count = s?.characters?.count ?? 0 > > However, the compiler wants this: > > let count = s?.characters.count ?? 0 > > or this: > > let count = (s?.characters)?.count ?? 0 > > My understanding of optional chaining is that, once you start using '?.' in a > dotted expression, the rest of the properties evaluate as optional and are > typically accessed by '?.', not '.'. > > So, I dug a little further and tried this in the playground: > > var s: String? = "Foo" > print(s?.characters) > > The result indicates that s?.characters is indeed an Optional instance, > indicating that s?.characters.count should be illegal. > > Why is s?.characters.count a legal expression? > > > -- > Stephen Schaub > _______________________________________________ > 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