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).
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