在Java中,您可以在接口中初始化最终的静态字符串。 Swift中还有一个方法吗?
答案 0 :(得分:9)
实际上,您可以使用协议扩展在Swift中执行此操作:
创建协议并使用getter定义所需的变量:
protocol Order {
var MAX_ORDER_ITEMS: Int { get }
func getItem(item: Int) -> OrderItem
// etc
}
定义协议扩展名:
extension Order {
var MAX_ORDER_ITEMS: Int { return 1000 }
}
这样做的一个优点是您不必像Swift和静态一样使用协议名称前缀。
唯一的问题是你只能从实现协议的类中访问变量(这可能是最常见的情况)。
答案 1 :(得分:5)
更新此答案不再准确。请改为 rghome 的答案
没有swift不支持。我的建议是在您的协议旁边定义一个结构,并将所有常量定义为不可变的静态存储属性。例如:
protocol MyProtocol {
}
struct MyProtocolConstants {
static let myConstant = 10
}
请注意,结构首选于类,至少有一个原因:类不支持静态存储属性(还)