在swift中连接嵌套的枚举字符串

在swift中连接嵌套的枚举字符串,swift,enums,Swift,Enums,我想声明一个枚举类型(例如ParentEnum),该类型将用作函数的参数,它包含许多“子”枚举,子枚举的每种情况都使用子枚举的名称作为前缀,下面是一个示例: enum ParentEnum: String { enum ChildEnum1: String { case c1 = "/ChildEnum1/c1" case c2 = "/ChildEnum1/c2" } enum ChildEnum2: String { c

我想声明一个枚举类型(例如ParentEnum),该类型将用作函数的参数,它包含许多“子”枚举,子枚举的每种情况都使用子枚举的名称作为前缀,下面是一个示例:

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
,以进一步扩展嵌套级别。希望这有帮助。

实施。这给了你一个单一的中心位置来准备你想要的任何东西。