In Java è possibile inizializzare le stringhe statiche finali in un'interfaccia. C'è anche un metodo in Swift?Swift Inizializzazione di variabili costanti nel protocollo
risposta
No swift non lo supporta. Il mio consiglio è di definire una struttura accanto al protocollo e definire tutte le costanti come proprietà statiche memorizzabili immutabili. Per esempio:
protocol MyProtocol {
}
struct MyProtocolConstants {
static let myConstant = 10
}
Si noti che le strutture sono preferite alle classi, per almeno una ragione: le classi non supportano le proprietà statiche memorizzate (ancora)
Grazie mille per la rapida risposta! –
In realtà, si può fare questo a Swift utilizzando le estensioni di protocollo :
Creare un protocollo e definire la variabile che vuoi con un getter:
protocol Order {
var MAX_ORDER_ITEMS: Int { get }
func getItem(item: Int) -> OrderItem
// etc
}
definire un protocollo di estensione:
extension Order {
var MAX_ORDER_ITEMS: Int { return 1000 }
}
Un vantaggio di questo è che non è necessario prefisso il nome del protocollo come al solito con Swift e statica.
L'unico problema è che è possibile accedere alla variabile solo all'interno di una classe che implementa il protocollo (che è probabilmente il caso più comune in ogni caso).
- 1. Swift downcasting e di protocollo variabili
- 2. Inizializzazione dell'intestazione del protocollo
- 3. Variabili di istanze costanti?
- 4. Variabili di inizializzazione smalltalk
- 5. Lazy/inline implementa un protocollo in Swift
- 6. Costruisci un elenco di costanti variabili da altre costanti
- 7. Variabili statiche di inizializzazione Quiz
- 8. inizializzazione variabile nel ciclo
- 9. Inizializzazione di oggetti Swift e scriptingbridge
- 10. Impossibile assegnare alla proprietà nel protocollo - Errore del compilatore Swift
- 11. Protocollo ObjC Implementazione in Swift
- 12. Swift: proprietà Default vs impostazione di inizializzazione
- 13. Quale è più veloce? Costanti, variabili o array di variabili
- 14. File Swift Costanti - classe o struct?
- 15. Swift Protocollo di eredità e generiche funzioni
- 16. Osservatore di proprietà Swift nell'estensione del protocollo?
- 17. Garantire inizializzazione delle variabili C#
- 18. Inizializzazione di proprietà Lazy in Swift
- 19. NSLocalizedString con variabili Swift
- 20. Liste di inizializzazione C++ per più variabili
- 21. Inizializzazione di variabili generiche in Scala
- 22. Inizializzazione di variabili statiche thread-safe
- 23. dizionario nel buffer di protocollo
- 24. Nascondi adozione del protocollo in swift
- 25. Swift. La corretta inizializzazione della gerarchia UITableViewCell
- 26. Elenchi di inizializzazione nel costruttore
- 27. Protocollo Swift delegato per classe generica
- 28. Swift UIView generico sottoclasse con emissione protocollo
- 29. Swift: classe Instantiate (AnyClass) conforme al protocollo
- 30. Impossibile eseguire il protocollo MKAnnotation in Swift
perché non leggere semplicemente questo https://developer.apple.com/library/ios/documentation/swift/conceptual/Swift_Programming_Language/Protocols.html? Racconta tutto sui protocolli in Swift –
In generale non è una buona architettura dichiarare le costanti nelle interfacce. So che molti sviluppatori Java lo fanno e quindi stanno implementando quell'interfaccia con le costanti alle loro classi, ma questo è davvero un abuso del concetto di interfacce. Un'interfaccia dovrebbe fornire un'interfaccia comune, cioè metodi comuni. Non costanti. – Sulthan