Encadenamiento opcional en Swift
Un solo ? corta todo el camino a nil.
struct Skipper {
var name: String
var boat: Boat?
}
struct Boat {
var name: String
var sailNumber: Int
}
let rae = Skipper(name: "Rae", boat: Boat(name: "Kestrel", sailNumber: 207))
let visitor = Skipper(name: "Sam", boat: nil)
// Each ? short-circuits the whole chain to nil.
print(rae.boat?.name ?? "no boat")
print(visitor.boat?.name ?? "no boat")
// The chain's type is Optional even at the end.
let sail: Int? = rae.boat?.sailNumber
print("Sail #\(sail ?? 0)")
Cómo funciona
rae.boat?.namelee a través del bote opcional.- Un nil en cualquier parte vuelve nil toda la cadena, en silencio.
- El resultado sigue siendo Optional:
let sail: Int?.
Palabras clave y builtins usados aquí
IntStringletprintstructvar
El intento, en números
- Líneas
- 19
- Caracteres a escribir
- 468
- Tokens
- 122
- Ritmo de tres estrellas
- 65 tpm
Al ritmo de tres estrellas de 65 tokens por minuto, este intento toma unos 113 segundos.
Paso 3 de 3 en Opcionales; paso 12 de 27 en Fundamentos del lenguaje.