Protokoll-Erweiterung-Initialisierer

Ich würde gerne wissen, was das Protokoll entspricht ist für eine Initialisierung in eine einfache Klasse, die nur enthält die Initialisierung Funktionalität und soll nur verlängert werden in einer konkreten Klasse.

Also wahrscheinlich der einfachste Weg zu zeigen, den code - ich freu mich für die Protokoll-Erweiterung äquivalent zu der folgenden:

import UIKit

class Thing {
    var color:UIColor
    init(color:UIColor) {
        self.color = color
    }
}
class NamedThing:Thing {
    var name:String
    init(name:String,color:UIColor) {
        self.name = name
        super.init(color:color)
    }
}
var namedThing = NamedThing(name: "thing", color: UIColor.blueColor())

Erwartete ich den code so Aussehen:

protocol Thing {
    var color:UIColor {get set}
}
extension Thing {
    init(color:UIColor) {
        self.color = color
    }
}
class NamedThing:Thing {
    var name:String
    var color:UIColor
    init(name:String,color:UIColor) {
        self.name = name
        self.init(color:color)
    }
}

Ich gesehen habe Lösungen vorgeschlagen, die in anderen StackOverflow-Fragen(zB. Wie definieren-Initialisierungen in eine Protokoll-Erweiterung? ), aber ich bin mir nicht sicher, Sie arbeiten noch speziell auf das problem von zusätzlichen Parametern in die Klasse Initialisierung.

Schreibe einen Kommentar