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

Reply via email to