在协议扩展中是否可以默认实现 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 属性的默认实现,但不能从扩展中向类型添加存储。