这是我的代码
public enum Key {
enum A: String {
case x
}
enum B: String {
case y
}
enum C: String {
case z
}
}
现在我需要比较参数所属的嵌套枚举, 这可能是这样的吗?
func readString(key: Key) {
switch key {
case .A:
//do smth
default:
break
}
}
答案 0 :(得分:0)
我找到了解决方案,特别是我的问题:
enum Key {
case a(A)
case b(B)
case c(C)
enum A: String {
case x
}
enum B: String {
case y
}
enum C: String {
case z
}
}
在此之后我们可以使用switch-case。
但最好以下列方式进行:
像这样的东西
protocol CKey: RawRepresentable where RawValue == String {
var nestingEnum: String { get }
}
enum Key {
enum A: String, CKey {
case x
var nestingEnum: String {
return "X"
}
}
enum B: String, CKey {
case y
var nestingEnum: String {
return "Y"
}
}
enum C: String, CKey {
case z
var nestingEnum: String {
return "Z"
}
}
}
并称之为
func read<Item: CKey>(for key: Item) -> String {
//now we can read key.nestingEnum
}