首先,我知道这是完全错误的语法,但它说明了我想要做的事情:
public func x(completion: CollectionType<MyClass> -> Void) {
}
基本上,我要做的是编写一个闭包,它接受一个支持CollectionType协议的对象,并包含一组“MyClass”对象。
我不在乎它是什么样的收藏品。如果它支持CollectionType,那么我应该能够得到“第n个”对象,或枚举对象等。我已经读过你不能在关闭中传递泛型,所以这可能是不可能的。如果没有,我会很高兴听到如何做到这一点。
答案 0 :(得分:3)
您可以使用采用AnyCollectionType
协议的其中一种类型来删除集合的类型。例如:
class MyClass {}
func foo(completion: (AnyRandomAccessCollection<MyClass> -> Void)) {
completion(AnyRandomAccessCollection([MyClass()]))
}
foo { collection in
for item in collection {
print(item)
}
}