协议扩展中是否可以实现get-set变量的默认实现?

时间:2017-03-20 18:57:14

标签: swift swift-protocols

是否可以在(默认的a)协议中创建变量?具体来说,我有一个协议所需的变量:

protocol SearchHandlingDelegate: class {
    ...
    var lastSearchTerm: String { get set }
    ...
}

并且希望在协议扩展中具有默认的实现方式:

extension SearchHandlingDelegate {
    ...
    var lastSearchTerm: String {
        set { lastSearchTerm = newValue }
        get { return lastSearchTerm }
    }
    ...
}

但这是一个无底的递归自调用循环......我可以让它返回另一个变量的值,但是通过协议的默认实现它不可能真的这样做...

1 个答案:

答案 0 :(得分:2)

您可以为计算值提供get / set属性的默认实现,但不能从扩展名向类型添加存储。