我想声明一个枚举类型(比如,ParentEnum),它将用作函数的参数,它包含许多“子”枚举,并且子枚举的每个case使用子枚举的名称为一个前缀,这是一个例子:
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”定义为rawValue,当我调用ParentEnum.ChildEnumX.c1
时,它会给我“/ ChildEnumX / c1”之类的上面的例子。
我希望这是有道理的,先谢谢。
答案 0 :(得分:0)
只记得要更新这篇文章,以防其他人遇到相同的问题,这是我想出的:
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"
。您还可以覆盖Child枚举的rawValue
来进一步扩展嵌套级别。希望这会有所帮助。