W języku Java można zainicjować końcowe ciągi statyczne w interfejsie. Czy jest też metoda w Swift?Swift Inicjalizacja zmiennych stałych w protokole
Odpowiedz
Żadne szybkie nie obsługuje tego. Moja rada to zdefiniowanie struktury obok twojego protokołu i zdefiniowanie wszystkich stałych jako niezmiennych statycznych właściwości przechowywanych. Na przykład:
protocol MyProtocol {
}
struct MyProtocolConstants {
static let myConstant = 10
}
Należy pamiętać, że struktury są preferowane do klas, co najmniej jednego powodu: zajęcia nie obsługuje statyczne zapisane właściwości (jeszcze)
Dziękuję bardzo za szybką odpowiedź! –
Faktycznie, można to zrobić w Swift używając rozszerzenia protokołu :
Tworzenie protokołu i zdefiniować zmienną chcesz z getter:
protocol Order {
var MAX_ORDER_ITEMS: Int { get }
func getItem(item: Int) -> OrderItem
// etc
}
zdefiniować rozszerzenie protokołu:
extension Order {
var MAX_ORDER_ITEMS: Int { return 1000 }
}
Zaletą tego jest to, że nie trzeba poprzedzać nazwy protokołu jak zwykle w przypadku Swift i statyki.
Jedynym problemem jest to, że dostęp do zmiennej można uzyskać tylko w klasie implementującej protokół (co i tak jest prawdopodobnie najczęstszym przypadkiem).
- 1. Zbuduj listę zmiennych stałych z innych stałych
- 2. Inicjalizacja zmiennych statycznych w C
- 3. Inicjalizacja zmiennych statycznych C++ wewnątrz funkcji szablonu
- 4. Inicjalizacja obiektu Swift i scriptingbridge
- 5. sposób ustawiania globalnych zmiennych stałych w pythonie
- 6. Haskell wzorzec dopasowania - jak używać stałych zmiennych
- 7. Rozszerzenie protokołu na protokole ObjC
- 8. Static Użytkownik nie może być stosowany na protokole Metatype Swift
- 9. Jak używać zmiennych globalnych lub stałych w Ruby?
- 10. Modyfikator statyczny jest dozwolony tylko w stałych deklaracjach zmiennych
- 11. Tworzenie globalnych zmiennych stałych w asp.net MVC 5
- 12. Domyślna inicjalizacja w java
- 13. Inicjalizacja obiektu CLLocation w Swift z szerokości i długości geograficznej
- 14. Czy istnieje sposób na warunkowe przypisanie do stałych w Swift?
- 15. Używanie zmiennych w CGRectMake, Swift, UIkit
- 16. Dlaczego inicjalizacja wielu zmiennych prowadzących do wycieku zakresu?
- 17. Nie można używać protokołu jako associatedtype w innym protokole w Swift
- 18. Swift przechwytywania zamknięcie i inout zmiennych
- 19. Statyczna inicjalizacja w ruchu?
- 20. Inicjalizacja struktury w C++
- 21. Inicjalizacja tablic w Pythonie
- 22. Nadpisywanie stałych w Javie
- 23. Definiowanie stałych w laravel
- 24. Odbieranie błędu w protokole UDP: odmówiono połączenia
- 25. Clojure: No wdrożenie metody w protokole
- 26. imagePickerController: didFinishPickingMediaWithInfo konfliktów z opcjonalnej metody wymogiem w protokole „UIImagePickerControllerDelegate”
- 27. Inicjalizacja log4net
- 28. Inicjalizacja Django
- 29. Zalety stałych
- 30. Inicjalizacja wskaźnika
dlaczego nie po prostu przeczytaj ten https://developer.apple.com/library/ios/documentation/swift/conceptual/Swift_Programming_Language/Protocols.html? Opowiada wszystko o protokołach w Swift –
Ogólnie nie jest to dobra architektura do deklarowania stałych w interfejsach. Wiem, że wielu programistów Java to robi, a następnie implementują ten interfejs ze stałymi klasami, ale to naprawdę nadużywa koncepcji interfejsów. Interfejs powinien zapewniać wspólny interfejs, czyli popularne metody. Nie stałe. – Sulthan