gpt4 book ai didi

swift2 - 如何在 Swift 中编写采用 CollectionType 的通用递归函数?

转载 作者:行者123 更新时间:2023-12-02 04:45:35 26 4
gpt4 key购买 nike

如何在 Swift 中创建一个通用函数来处理 CollectionType?例如,我想要的东西可以归结为:

func f<C: CollectionType>(list: C) {
if list.isEmpty {
return
}
else {
f(list.dropFirst()) // causes error
}
}

这会导致错误,因为 SubSequence 可能不是 CollectionType:无法使用类型为“(C.SubSequence)”的参数列表调用“f”

我尝试通过像这样限制 SubSequence 类型来解决它:

<C: CollectionType where C.SubSequence: CollectionType>

虽然我得到了同样的错误。关于如何为 CollectionType 编写通用递归函数有什么建议吗?

最佳答案

要修复您的错误,您可以使用 Array 初始值设定项将 SubSequence 转换为数组:

func f<C: CollectionType>(list: C) {
if list.isEmpty {
return
}
else {
f(Array(list.dropFirst()))
}
}

关于swift2 - 如何在 Swift 中编写采用 CollectionType 的通用递归函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33348291/

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