Protocolos y extensiones en Swift
Declara el requisito; comparte la implementación.
// A protocol states requirements; an extension supplies shared code.
protocol Signaling {
var callSign: String { get }
}
extension Signaling {
func hail() -> String { "\(callSign), \(callSign), race control" }
}
struct Yacht: Signaling {
let callSign: String
}
// Extensions also add to types you do not own.
extension String {
var flagged: String { "[FLAG] " + self }
}
let boat = Yacht(callSign: "Kestrel")
print(boat.hail())
print("black flag start".flagged)
Cómo funciona
protocol Signalingexige una propiedad.- Una extensión regala
hail()a cada conformante. extension Stringagrega una propiedad a un tipo ajeno.
Palabras clave y builtins usados aquí
Stringextensionfuncgetletprintprotocolstructvar
El intento, en números
- Líneas
- 20
- Caracteres a escribir
- 465
- Tokens
- 89
- Ritmo de tres estrellas
- 65 tpm
Al ritmo de tres estrellas de 65 tokens por minuto, este intento toma unos 82 segundos.
Paso 1 de 3 en Abstracciones; paso 19 de 27 en Fundamentos del lenguaje.