【发布时间】:2017-11-27 17:07:16
【问题描述】:
我在 Swift 中有一个带有表单签名的方法:
func myMethod<T>(class: T.Type) where T: SomeClass & MyProtocol
我想要一个变量,它是一个类数组,它们都是 SomeClass 的子类并符合 MyProtocol。
它看起来像:
let classArray = [SubclassOfSomeClass.self, SubclassTwoOfSomeClass.self, SubclassThreeOfSomeClass.self]
SubclassOfSomeClass、SubclassTwoOfSomeClass 和 SubclassThreeOfSomeClass 都符合 MyProtocol
然后我想拨打myMethod如下:
classArray.forEach { classType in
myMethod(class: classType)
}
我收到编译器错误“无法推断通用参数 T”。这对我来说很有意义,因为classArray 变量的类型被推断为[MyClass.Type]。
我的问题是,我可以以及如何定义变量classArray,以便编译器知道其中定义的每个类型都符合协议MyProtocol。
【问题讨论】:
标签: swift