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