0
我正在写一个函数,需要返回一个项目数组。在函数中将会有一些逻辑来确定我想从函数返回的项目的类型。我一开始是这样的:Swift通用数组到特定类型
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中完成这项工作?
类型检查不知道'switch'es;它无法弄清楚什么T _将基于'option'的值。是否有一个原因,你不能把它分成两个功能? –
如果返回类型与输入类型无关,则返回任意Swift 3或AnyObject Swift 2数组 –