协议中的 var 作为特定协议

var in protocol as specific protocol

如何在 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 使其成为语言。

如果您希望 class 满足此协议且 class 的定义中未指定 T,请使 class 通用。

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

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

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