具有关联值的枚举作为另一个枚举的关联值(嵌套关联值)

时间:2018-09-18 15:59:49

标签: swift

我有一个具有关联值的枚举np。枚举next充当另一个枚举rear的关联值。我想知道如何访问Foo的“嵌套”关联值,如下面的示例所示:

Foo

2 个答案:

答案 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"
}

或者,如果您要对Foodar用相同的方式处理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"
    }
}