Ich habe zwei Optionen, wenn Protokollkonformität in Swift, mit dem gleichen Endergebnis Umsetzung:Wo Swift-Protokolle implementieren?
- das Protokoll innerhalb der Klasse implementieren - das heißt, Zustand die Konformität an der Spitze der Klassendefinition und Umsetzung setzen innerhalb der Klasse Körper oder
- Implementieren Sie das Protokoll in einer Erweiterung - das heißt, Code-up-Protokoll-Konformität völlig außerhalb der Klasse. Hier
ist ein Beispiel:
public class MyClass : CustomDebugStringConvertible {
... // Something
public var debugDescription : String {
return "MyClass"
}
}
gegen
class MyClass {
... // Something
}
extension MyClass : CustomDebugStringConvertible {
public var debugDescription: String {
return "MyClass"
}
}
Codebeispiele in Swift Büchern auf dem ersten Ansatz konzentrieren neigen; Apple's source code of Swift core zeigt, dass sie nur den zweiten Ansatz verwenden (siehe Bool
und Optional
für ein Beispiel).
Gibt es einen fundierten Weg, zwischen den beiden Ansätzen situationsabhängig zu entscheiden, oder ist es nur eine Frage der Programmierpräferenz?
Es ist eine Frage der Präferenz, und ist daher eine Frage der Meinung. Persönlich mache ich fast immer Letzteres, aber nicht unbedingt immer. Siehe auch meine Kommentare zu Erweiterungen hier: http://www.apeth.com/swiftBook/ch04.html#_extending_object_types – matt