Ios 将Swift泛型数组转换为特定类型
我正在编写一个需要返回一个项目数组的函数。在函数中,将有一些逻辑确定我希望从函数返回的项的类型。我开始这样做:Ios 将Swift泛型数组转换为特定类型,ios,swift,generics,Ios,Swift,Generics,我正在编写一个需要返回一个项目数组的函数。在函数中,将有一些逻辑确定我希望从函数返回的项的类型。我开始这样做: func testFunc<T>(option:Int) -> [T] { var result:[T] = [] switch option { case 1: let sampleString:String = "hello" result.append(sampleString) case 2:
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
}
这是有道理的,但是,我正在努力想办法解决我的问题。当我调用函数时,我不知道返回的数组中是什么类型,但函数在开始向数组追加项之前知道如何确定类型
如何在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
}
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
}
类型检查器不知道
开关
es;它无法根据选项的值
计算出T的值。是否有理由不能将其分为两个函数?如果返回类型与输入类型无关,只需返回任何Swift 3或任何对象Swift 2的数组,类型检查器不知道有关开关的信息
es;它无法根据选项的值
计算出T的值。有没有理由不能将其分成两个函数?如果返回类型与输入类型无关,只需返回任意Swift 3或任意对象Swift 2的数组即可