Warum funktioniert diese Arbeit:Warum kann ich keine Standardimplementierungen für Type-Funktionen bereitstellen, die Self im Protokoll zurückgeben, wenn Vererbung verwendet wird?
class Foo : Work {
required init() {}
static func make() -> Self {
return self.init()
}
}
Ich könnte auch eine nicht-Klasse verwenden, oder die Klasse markieren final
:
protocol Work {
init()
static func make() -> Self
}
extension Work {
static func make() -> Self {
return self.init()
}
}
class Foo : Work {
required init() {}
}
I Vererbung möglich, indem die Fabrik auf das Objekt selbst machen kann , aber ich möchte/muss Vererbung verwenden.
Ist es möglich, eine Standardfactory für ein Protokoll zu implementieren, sodass ein vererbbarer Typ ohne erneute Implementierung übereinstimmen kann?
Was bedeutet "arbeiten" (wie in "funktioniert nicht" oder "es funktioniert")? – matt
Ich klärte in der Frage @matt, sorry darüber. "Arbeit" bedeutet in diesem Zusammenhang, dass ein vererbbares Objekt konform sein kann, ohne den Konstruktor auf Klassenebene zu duplizieren. – Logan