在协议扩展中是否可以默认实现 get-set 变量?
Is default implementation of a get-set variable possible in a protocol extension?
是否可以在协议(a 的默认实现)中创建变量?具体来说,我有一个协议要求的变量:
protocol SearchHandlingDelegate: class {
...
var lastSearchTerm: String { get set }
...
}
并希望在协议扩展中有一个默认实现:
extension SearchHandlingDelegate {
...
var lastSearchTerm: String {
set { lastSearchTerm = newValue }
get { return lastSearchTerm }
}
...
}
但这是一个无底的递归自调用循环……我可以 return 另一个变量的值,但实际上不可能通过协议的默认实现来做到这一点…
您可以为计算值提供 get/set 属性的默认实现,但不能从扩展中向类型添加存储。
是否可以在协议(a 的默认实现)中创建变量?具体来说,我有一个协议要求的变量:
protocol SearchHandlingDelegate: class {
...
var lastSearchTerm: String { get set }
...
}
并希望在协议扩展中有一个默认实现:
extension SearchHandlingDelegate {
...
var lastSearchTerm: String {
set { lastSearchTerm = newValue }
get { return lastSearchTerm }
}
...
}
但这是一个无底的递归自调用循环……我可以 return 另一个变量的值,但实际上不可能通过协议的默认实现来做到这一点…
您可以为计算值提供 get/set 属性的默认实现,但不能从扩展中向类型添加存储。