我有一个具有关联值的枚举np
。枚举next
充当另一个枚举rear
的关联值。我想知道如何访问Foo
的“嵌套”关联值,如下面的示例所示:
Foo
答案 0 :(得分:3)
您可以使用模式匹配:
switch type {
case .mar:
return "mar"
case .dar(let foo) where foo == .moo:
return "darmoo"
case .dar(.moo):
return "dar: moo"
case let .dar(.zoo(value)):
return "dar: \(value)"
case .gar:
return "gar"
}
或者,如果您要对Foo
和dar
用相同的方式处理gar
,则可以在一种情况下绑定foo
:
switch type {
case .mar:
return "mar"
case .dar(let foo) where foo == .moo:
return "darmoo"
case let .dar(foo), let .gar(foo):
switch foo {
case .moo:
return "moo"
case let .zoo(value):
return value
}
}
答案 1 :(得分:1)
正如您正确地说的,它是嵌套的。这么窝!在开关内使用一个开关。编译:
func request(with type: Car) -> String {
switch type {
case .mar:
return "mar"
case .dar(let foo):
switch foo {
case .moo: return "darmoo"
case .zoo(let s): return s
}
case .gar:
return "gar"
}
}