Void) { } 基本上,我想做的是编-6ren">
gpt4 book ai didi

swift - 如何将通用的 "CollectionType"传递给快速关闭?

转载 作者:搜寻专家 更新时间:2023-10-31 22:33:54 25 4
gpt4 key购买 nike

首先,我知道这是完全错误的语法,但它说明了我想做什么:

    public func x(completion: CollectionType<MyClass> -> Void) {

}

基本上,我想做的是编写一个闭包,它接受一个支持 CollectionType 协议(protocol)的对象,并包含一个“MyClass”对象的集合。

我不关心它是什么类型的集合。如果它支持 CollectionType,那么我应该能够获得“第 n 个”对象,或者通过对象进行枚举等。我读过你不能在闭包中传递泛型,所以这可能是不可能的。如果没有,我很乐意听听如何去做。

最佳答案

您可以使用其中一种采用 AnyCollectionType 的类型删除集合类型的协议(protocol)。例如:

class MyClass {}

func foo(completion: (AnyRandomAccessCollection<MyClass> -> Void)) {
completion(AnyRandomAccessCollection([MyClass()]))
}

foo { collection in
for item in collection {
print(item)
}
}

关于swift - 如何将通用的 "CollectionType"传递给快速关闭?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34322024/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com