mi sto cercando di capire quanto segue, artificiosa, ad esempio:Perché una classe non deve fornire un inizializzatore fessibile se implementa un protocollo che ne dichiara uno?
protocol MyProtocol {
init?(string: String)
}
class MyObject: MyProtocol {
let s: String
required init(string: String) {
self.s = string
}
}
let o = MyObject(string: "test")
print(o.s)
MyProtocol
dichiara un failable initializer. MyObject
è conforme allo MyProtocol
e il codice di esempio viene compilato ed eseguito senza problemi.
La mia domanda è: perché non lo fa MyObject
hanno per fornire un inizializzatore failable (come da MyProtocol
)?
L'initialiser fallibile è ancora un initialiser che restituisce un. 'MyObject' nel caso ideale. Viene trumped dall'inizializzatore non-failiable della stessa firma. Devi ancora fornire all'inizializzatore la stessa firma per la compilazione del codice. Immagino sia un inizializzatore fallibile che non può fallire. In un modo. – Fogmeister
Forse perché gli optional sono opzionali? Haha ma su una nota più seria un oggetto intializzato che è sempre ". Qualcuno" soddisferà il tuo protocollo. – NSGangster