В Java вы можете инициализировать конечные статические строки в интерфейсе. Есть ли метод в Swift?Swift Инициализация постоянных переменных в протоколе
ответ
Ни один из них не поддерживает это. Мой совет - определить структуру вместе с вашим протоколом и определить все константы как неизменные статические хранимые свойства. Например:
protocol MyProtocol {
}
struct MyProtocolConstants {
static let myConstant = 10
}
Обратите внимание, что структуры являются предпочтительными классами, по крайней мере, по одной причине: классы не поддерживают статические сохраненные свойства (пока)
Большое спасибо за быстрый ответ! –
На самом деле, вы можете сделать это в Swift с помощью расширений протокола :
Создать протокол и определить переменную, которую вы хотите с геттер:
protocol Order {
var MAX_ORDER_ITEMS: Int { get }
func getItem(item: Int) -> OrderItem
// etc
}
Define продление протокола:
extension Order {
var MAX_ORDER_ITEMS: Int { return 1000 }
}
Преимущество этого в том, что вам не нужно префикс имени протокола, как обычно, с помощью Swift и statics.
Единственные проблемы в том, что вы можете получить доступ только к переменной из класса, реализующего протокол (это, вероятно, самый распространенный случай).
- 1. Определение постоянных постоянных переменных в cuda
- 2. Инициализация указателя постоянных символов класса
- 3. Swift - Инициализация переменных класса, которые являются классами
- 4. SubClass UITableViewController и инициализация переменных. iOS, SWIFT
- 5. C89 и инициализация переменных
- 6. Разница в переменных/постоянных декларациях
- 7. Инициализация переменных
- 8. инициализация переменных в C#
- 9. Инициализация в полиморфизма переменных
- 10. Инициализация переменных в функции
- 11. Инициализация переменных в GMP
- 12. Инициализация переменных в C++
- 13. «Инициализация» переменных в python?
- 14. Копирование векторов из постоянных переменных
- 15. Гобелен 5: инициализация постоянных данных страницы
- 16. Необязательные методы в протоколе Swift и перегрузка
- 17. Swift typealias в протоколе и общих типов
- 18. Swift 3. NSFetchedResultsController свойство в протоколе
- 19. Swift Объявить класс Func в протоколе
- 20. Переменная типа в протоколе - Swift 2
- 21. Инициализация CHCSVPaser в swift
- 22. Инициализация в swift
- 23. Инициализация NSOpenGLPixelFormat в Swift
- 24. Инициализация MFMessageComposeViewController в Swift
- 25. Инициализация UIViewController в Swift
- 26. Сохранение постоянных переменных после перезапуска в NodeMCU
- 27. Производительность штраф постоянных переменных в MATLAB
- 28. Использование недопустимых постоянных переменных в классе
- 29. Определение нескольких постоянных переменных в clojure
- 30. Использование постоянных переменных в выражениях Objective-C?
Почему бы просто не прочитать это https://developer.apple.com/library/ios/documentation/swift/conceptual/Swift_Programming_Language/Protocols.html? Он рассказывает все о протоколах в Swift –
В целом, это не хорошая архитектура, чтобы объявлять константы в интерфейсах. Я знаю, что многие разработчики Java делают это, а затем они реализуют этот интерфейс с константами для своих классов, но это действительно злоупотребляет концепцией интерфейсов. Интерфейс должен обеспечивать общий интерфейс, то есть общие методы. Не константы. – Sulthan