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
在这里, Optional
is an enum
and Foo
is 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
?也许有一个我可以使用的注释?