Encadenamiento opcional con cuerdas Swift
Con encadenamiento opcional, si tengo una variable Swift
var s: String?
s puede contener nil, o una cadena envuelta en un opcional. Entonces, intenté esto para obtener su longitud:
let count = s?.characters?.count ?? 0
Sin embargo, el compilador quiere esto:
let count = s?.characters.count ?? 0
Mi comprensión del encadenamiento opcional es que, una vez que comience a usar?.
en una expresión punteada, el resto de las propiedades se hacen opcionales y normalmente se accede por?.
no.
.
Entonces, cavé un poco más y probé esto en el patio de recreo:
var s: String? = "Foo"
print(s?.characters)
// Output: Optional(Swift.String.CharacterView(_core: Swift._StringCore(_baseAddress: 0x00000001145e893f, _countAndFlags: 3, _owner: nil)))
El resultado indica ques?.characters
es de hecho una instancia opcional, que indica ques?.characters.count
Debería ser ilegal.
¿Alguien puede ayudarme a entender este estado de cosas?