将协议中的var作为特定协议

时间:2017-03-20 18:33:30

标签: swift swift-protocols

如何在swift上描述协议中的变量 任何类型,但支持特定协议

像这样的东西

protocol MyProtocol: class {
    var itemsList: AnyObject where Collection { get } // AnyObject supports a Collection protocol
}

1 个答案:

答案 0 :(得分:2)

也许你想要:

protocol MyProtocol: class {
    associatedtype T: Collection
    var itemsList: T { get }
}

如果您希望T绝对是一个对象(不是struct),那么您必须等待this proposal使其成为该语言。

如果您希望类在类定义中未指定T来满足此协议,请将该类设为通用。

class C<T: Collection>: MyProtocol {
    let itemsList: T

    init(_ itemsList: T) {
        self.itemsList = itemsList
    }
}

let x = C([1,2,3])