具有特定类型元素的CollectionType扩展忽略子类型

时间:2015-08-31 14:00:52

标签: swift generics swift2 swift-extensions

我试图为包含特定类型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子句中遗漏了哪些内容可以解决这个问题,还是我完全错了?

1 个答案:

答案 0 :(得分:1)

使用:代替==

尝试:

extension CollectionType where Generator.Element: FooClass {