Selfkann auch in Klassen verwendet werden und ist nützlich. Hier ist ein Artikel darüber.
Hier ist ein Beispiel. Sie haben eine Klasse namens MyClass. MyClassMethoden haben, die Instanzen davon zurückgeben. Jetzt fügen Sie eine Unterklasse von MyClassaufgerufen hinzu MySubclass. Sie möchten, dass diese Methoden Instanzen von MySubclassstatt zurückgeben MyClass. Der folgende Code zeigt, wie es geht. Beachten Sie, dass die Methoden entweder Instanzmethoden oder Klassenmethoden sein können.
class MyClass: CustomStringConvertible {
let text: String
required init(text: String) {
self.text = text
}
class func create() -> Self {
return self.init(text: "Created")
}
func modify() -> Self {
return type(of: self).init(text: "modifid: " + text)
}
var description: String {
return text
}
}
class MySubclass: MyClass {
required init(text: String) {
super.init(text: "MySubclass " + text)
}
}
let myClass = MyClass.create()
let myClassModified = myClass.modify()
let mySubclass = MySubclass.create()
let mySubclassModified = mySubclass.modify()
print(myClass)
print(myClassModified)
print(mySubclass)
print(mySubclassModified)
Die folgende Zeile wurde ausgedruckt:
selfundSelfin Protokollerweiterungen - darauf gehe ich in diesen Fragen und Antworten ausführlich ein .