我想创建一个函数,它可以返回几种不同类型之一的数组,具体取决于它参数化的类型。扭曲是我想将返回值指定为文字。有没有办法做到这一点(或类似的东西?)它应该看起来像这样:
func values<T>() -> [T] {
switch T.self {
case is String.Type:
return ["A", "B", "C"]
default:
return []
}
}
该特定代码在返回行上产生此错误:“无法将类型'[String]'的返回表达式转换为返回类型'[T]'”
我关心的原因是因为我正在尝试创建一个具有sections
变量(或函数)的通用视图控制器,其中这些部分是枚举中的元素。但是我想使用不同的枚举,具体取决于类参数化的类型。
答案 0 :(得分:2)
您正在描述重载:
func values() -> [String] {
return ["A", "B", "C"]
}
func values() -> [Int] {
return [1,2,3]
}
然而,在许多情况下,返回类型的重载变得非常不方便,因为你必须使用过多的显式类型,但是根据你的描述,这应该可以正常工作。