我正在尝试为包含某些类型为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 {

09-30 21:52