如何在swift协议中描述变量
任何类型,但支持特定协议
像这样的东西

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

最佳答案

也许你想:

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])

09-27 13:33