In Java können Sie statische Strings in einer Schnittstelle initialisieren. Gibt es auch eine Methode in Swift?Swift Initialisierung von konstanten Variablen im Protokoll
Antwort
Keine schnelle unterstützt das nicht. Mein Rat ist, eine Struktur neben Ihrem Protokoll zu definieren und alle Konstanten als unveränderliche statische gespeicherte Eigenschaften zu definieren. Zum Beispiel:
protocol MyProtocol {
}
struct MyProtocolConstants {
static let myConstant = 10
}
Beachten Sie, dass structs Klassen bevorzugt werden, für mindestens einen Grund: Klassen unterstützen nicht statisch gespeichert Eigenschaften (noch)
Vielen Dank für die schnelle Antwort! –
Eigentlich kann man dies in Swift tun Protokollerweiterungen :
ein Protokoll erstellen und die Variable, die Sie mit einem Getter definieren wollen:
protocol Order {
var MAX_ORDER_ITEMS: Int { get }
func getItem(item: Int) -> OrderItem
// etc
}
eine Protokollerweiterung definieren:
extension Order {
var MAX_ORDER_ITEMS: Int { return 1000 }
}
Ein Vorteil davon ist, dass Sie den Protokollnamen nicht wie bei Swift und Statik üblich vorsetzen müssen.
Das einzige Problem ist, dass Sie nur innerhalb einer Klasse, die das Protokoll implementiert, auf die Variable zugreifen können (was wahrscheinlich der häufigste Fall ist).
- 1. Initialisierung von konstanten Strukturen, Klassen und Arrays im Namespace
- 2. lebensdauer der konstanten variablen?
- 3. Statische Initialisierung von lokalen Variablen
- 4. Optionale Methoden im Swift-Protokoll und Überlastung
- 5. Swift deklarieren Klasse Func im Protokoll
- 6. C++ - Initialisierung von Variablen im Header vs mit Konstruktor
- 7. Swift und scriptingbridge Objekt Initialisierung
- 8. OptionSetType Protokoll Swift
- 9. Wie Objective-C extern Konstanten Swift
- 10. Parsen von JSON zu Swift-Konstanten
- 11. Initialisierung von Instanzfeldern vs. lokalen Variablen
- 12. Struktur Initialisierung Unübertroffene Variablen
- 13. Statische Variablen Initialisierung Quiz
- 14. Smalltalk Initialisierung Variablen
- 15. Swift View Controller Initialisierung Ausgabe
- 16. Mit Protokoll in Swift
- 17. Swift: Protokoll Standardimplementierung - didSet
- 18. Swift-Protokoll funktioniert nicht
- 19. Swift Delegierte und Protokoll
- 20. Überschreiben von Konstanten im Winkelmesser-Test
- 21. Initialisierung statische Variablen mit nicht konstantem Wert
- 22. C++ Initialisierung von statischen Variablen (noch einmal)
- 23. Swift: Initialisierung einer verschachtelten Klasse
- 24. Vorlage der konstanten globalen Variablen
- 25. Swift-Protokoll-Deklaration: Argument Labels?
- 26. Swift Eigenschaft im Speicher vor der Initialisierung geladen heißt
- 27. Swift-Protokoll als generische Typ
- 28. Initialisierung statischer Variablen in C
- 29. Variable Initialisierung im Variablenbereich im Tensorflow
- 30. Swift Protokoll-Erweiterungen mit Aufzählungen
Warum nicht einfach diese https://developer.apple.com/library/ios/documentation/swift/conceptual/Swift_Programming_Language/Protocols.html lesen? Es sagt alles über Protokolle in Swift –
Im Allgemeinen ist es keine gute Architektur, Konstanten in Schnittstellen zu deklarieren. Ich weiß, dass viele Java-Entwickler das tun, und dann implementieren sie diese Schnittstelle mit Konstanten zu ihren Klassen, aber das missbraucht wirklich das Konzept von Schnittstellen. Eine Schnittstelle sollte eine gemeinsame Schnittstelle bereitstellen, dh allgemeine Methoden. Keine Konstanten. – Sulthan