在swift中连接嵌套的枚举字符串
我想声明一个枚举类型(例如ParentEnum),该类型将用作函数的参数,它包含许多“子”枚举,子枚举的每种情况都使用子枚举的名称作为前缀,下面是一个示例:在swift中连接嵌套的枚举字符串,swift,enums,Swift,Enums,我想声明一个枚举类型(例如ParentEnum),该类型将用作函数的参数,它包含许多“子”枚举,子枚举的每种情况都使用子枚举的名称作为前缀,下面是一个示例: enum ParentEnum: String { enum ChildEnum1: String { case c1 = "/ChildEnum1/c1" case c2 = "/ChildEnum1/c2" } enum ChildEnum2: String { c
enum ParentEnum: String {
enum ChildEnum1: String {
case c1 = "/ChildEnum1/c1"
case c2 = "/ChildEnum1/c2"
}
enum ChildEnum2: String {
case c1 = "/ChildEnum2/c1"
case c2 = "/ChildEnum2/c2"
}
...
}
是否有一种方法可以泛化“/ChildEnumX”部分,因此我只需要将“/cX”定义为其原始值,当我调用ParentEnum.ChildEnumX.c1
时,它会像上面的示例一样为我提供“/ChildEnumX/c1”
我希望这是有意义的,提前谢谢。刚刚记得更新这篇文章,以防其他人有同样的问题,这就是我想到的:
enum ParentEnum {
case Child1(ChildEnum1)
case Child2(ChildEnum2)
enum ChildEnum1: String {
case c1 = "/c1"
case c2 = "/..."
}
enum ChildEnum2: String {
case c1 = "/..."
case c2 = "/..."
}
...
var rawValue: String {
switch self {
case .Child1(let child):
return "ChildEnum1/\(child.rawValue)"
case .Child2(let child):
return "ChildEnum2/\(child.rawValue)"
}
}
}
如果将ParentEnum用作函数的参数,.Child1(.c1).rawValue
将生成“ChildEnum1/c1”
。您还可以覆盖子枚举的rawValue
,以进一步扩展嵌套级别。希望这有帮助。实施。这给了你一个单一的中心位置来准备你想要的任何东西。