从Swift泛型函数返回文字值?

时间:2016-04-13 18:07:30

标签: swift generics enums

我想创建一个函数,它可以返回几种不同类型之一的数组,具体取决于它参数化的类型。扭曲是我想将返回值指定为文字。有没有办法做到这一点(或类似的东西?)它应该看起来像这样:

func values<T>() -> [T] {
    switch T.self {
        case is String.Type:
            return ["A", "B", "C"]
        default:
            return []
    }
}

该特定代码在返回行上产生此错误:“无法将类型'[String]'的返回表达式转换为返回类型'[T]'”

我关心的原因是因为我正在尝试创建一个具有sections变量(或函数)的通用视图控制器,其中这些部分是枚举中的元素。但是我想使用不同的枚举,具体取决于类参数化的类型。

1 个答案:

答案 0 :(得分:2)

您正在描述重载:

func values() -> [String] {
    return ["A", "B", "C"]
}

func values() -> [Int] {
    return [1,2,3]
}

然而,在许多情况下,返回类型的重载变得非常不方便,因为你必须使用过多的显式类型,但是根据你的描述,这应该可以正常工作。