Optional在 Swift 中允许使用魔法 where switch-ing over an optionalenum将案例扁平化为单个 switch 语句。
鉴于:
enum Foo {
case bar, baz
}
你可以:
let foo: Foo? = .bar
switch foo {
case .bar:
break
case .baz:
break
case nil:
break
在这里, Optionalis an enumand Foois an enum, 但仅仅一个语句就足以涵盖两者的所有情况。
enum问题:我可以在另一个里面声明我自己的enum,这样案件也可以以平坦的方式处理吗?
这样我就可以:
enum Foo<Bar> {
case nope
case dope(Bar)
}
enum Baz {
case yep
}
let b: Foo<Baz> = .dope(.yep)
switch b {
case .nope:
break
case .yep:
break
}
也许如果我把这个案子Foo.dope称为Foo.some?也许有一个我可以使用的注释?