我正在尝试为包含某些类型为FooType的元素的集合类型创建扩展,并且可以正常工作:
extension CollectionType where Generator.Element == FooClass
{
func doSomething()
}
let collectionType = [FooClass]()
collectionType.doSomething()
我的问题是,我还希望此扩展适用于包含Foo类的子类的集合类型:
let collectionType = [FooSubclass]()
collectionType.doSomething() // Doesn't work
我可能会覆盖“ ==”运算符,并遍历超类链,直到找到匹配项,但不确定这是否是正确的方法。
public func ==(t0: Any.Type?, t1: Any.Type?) -> Bool
我在where子句中缺少可以解决此问题的内容吗,或者我这样做完全错误?
最佳答案
使用:
代替==
。
尝试:
extension CollectionType where Generator.Element: FooClass {