如何在swift上描述协议中的变量 任何类型,但支持特定协议
像这样的东西
protocol MyProtocol: class {
var itemsList: AnyObject where Collection { get } // AnyObject supports a Collection protocol
}
答案 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])