typestar

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

  1. rae.boat?.name lee a través del bote opcional.
  2. Un nil en cualquier parte vuelve nil toda la cadena, en silencio.
  3. El resultado sigue siendo Optional: let sail: Int?.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 3 de 3 en Opcionales; paso 12 de 27 en Fundamentos del lenguaje.

← Anterior Siguiente →