Sto creando una struttura di unità in Swift, che ha superclasse di misurazione e sottoclassi per unità diverse, come Massa e Volume. Una funzionalità è consentire al framework di indovinare correttamente con quale unità è stato creato e restituire la classe corretta. codice di esempio:Crea l'inizializzatore per la superclasse restituisce una sottoclasse specifica?
class Measurement {
var unitString : String
init(unknownUnit: String) {
// checks if the unit is either Volume or Mass, and returns an instance of that class
}
}
class Volume : Measurement {
init(unitString: String) {
}
}
class Mass : Measurement {
init(unitString: String) {
}
}
let mass = Mass("kg") // class: Mass
let volume = Volume("ml") // class: Volume
let shouldBeVolume = Measurement("ml") // class: Volume
let shouldBeMass = Measurement("kg") // class: Mass
E 'possibile avere una classe ereditata creare un oggetto di una sottoclasse specifica durante l'inizializzazione è?
Biblioteca è chiamato Indus Valley e open source su GitHub
Questo è sicuramente una limitazione fastidiosa di Swift 'non init' restituire un valore. – pkamb