以以下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
的一些基本原则,即使尝试这样做,我也会违反这一原则?