Optional
在 Swift 中,可以使用switch
-ing 來實現一個可選項enum
將 case 扁平化為單個 switch 語句的魔法。
鑑於:
enum Foo {
case bar, baz
}
你可以:
let foo: Foo? = .bar
switch foo {
case .bar:
break
case .baz:
break
case nil:
break
在這裡,Optional
is anenum
和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
?也許有一個我可以使用的註釋?
你可以用……
switch b {
case .nope: // stuff
case .dope(.yep): // other stuff
case .dope(.someOtherCase): // more stuff
}
正在回复您的評論…
想像一下,你可以像你說的那樣把它壓平。你會怎麼處理……
enum Foo {
case a
case b(Bar)
case c(Bar)
}
如果允許您.b
從開關中排除 ,則無法區分.b
和.c
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句