gpt4 book ai didi

ios - Swift 通用数组到特定类型

转载 作者:行者123 更新时间:2023-11-28 09:54:37 24 4
gpt4 key购买 nike

我正在编写一个需要返回项目数组的函数。在函数中会有一些逻辑来确定我想从函数返回的项目的类型。我开始了这样的事情:

func testFunc<T>(option:Int) -> [T] {
var result:[T] = []

switch option {
case 1:
let sampleString:String = "hello"
result.append(sampleString)
case 2:
let sampleInt:Int = 23
result.append(sampleInt)
default:
return result
}

return result
}

这给了我以下错误:

"cannot invoke append with an argument list of type '(String)', 
and
"cannot invoke append with an argument list of type '(Int)'

这是有道理的,但是,我正在努力弄清楚如何解决我的问题。当我调用该函数时,我不知道返回的数组中的类型是什么,但该函数会在开始向数组追加项之前知道如何确定类型。

如何在 Swift 中完成此操作?

最佳答案

Swift 不支持多种类型的变量。使用通用 T 使函数通用,因此调用者可以选择返回类型。您应该重新考虑您的设计。

如果你真的想根据一个参数返回多种结果类型,有一些解决方法:

1:使用任意数组。

var result:[Any] = []

2:使用具有关联值的枚举

enum TestFuncResult {
case string(String)
case int(Int)
}

func testFunc(option: Int) -> [TestFuncResult] {
var result:[TestFuncResult] = []

switch option {
case 1:
let sampleString:String = "hello"
result.append(.string(sampleString))
case 2:
let sampleInt:Int = 23
result.append(.int(sampleInt))
default:
return result
}

return result
}

关于ios - Swift 通用数组到特定类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39186990/

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