给定:
protocol MyProtocol {
typealias T
var abc: T { get }
}
实现MyProtocol的类:
class XYZ: MyProtocol {
typealias T = SomeObject
var abc: T { /* Implementation */ }
}
我该如何定义一个符合
MyProtocol
的对象数组?var list = [MyProtocol]()
(连同大量的SourceKit崩溃)会产生以下错误:
Protocol 'MyProtocol' can only be used as a generic constraint because it has Self or associated type requirements
虽然 typealias 实际上是在 MyProtocol
中定义的,但是我们可以将它放在全局作用域中使用。
有没有一种方法可以列出符合协议并具有泛型约束的对象列表?