是否可以编写一个通用函数来提取Swift中枚举的相关值?

时间:2015-01-16 20:31:15

标签: generics swift enums

以以下enum为例:

enum Property {
    case Editable(Bool)
    case StringValue(String)
}

我可以使用switch语句编写函数,该语句将提取相关的值,如下所示:

get() -> Any {
    switch self {
        case .Editable(let value): return value
        case .StringValue(let value): return value
}

但如果我有一个enum有很多不同的cases,那么写一个通用函数要简单得多,就像这样:

get<T>() -> T {
    switch self {
        case (What Goes Here?)(let value): return value
}

换句话说,它将是一个通用函数,其中case总是返回它所拥有的任何值......但我无法让它工作。

据我所知,switch语句是获取相关值的唯一方法,但我无法制定适当的switch x - case x模式只要归还所持有的任何价值。

有什么建议吗?

是否有enums的一些基本原则,即使尝试这样做,我也会违反这一原则?

0 个答案:

没有答案