如何在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])