【发布时间】:2021-12-09 19:13:57
【问题描述】:
Swift 中的Optional 允许使用switch-ing 覆盖可选的enum 的魔术,将案例扁平化为单个switch 语句。
给定:
enum Foo {
case bar, baz
}
你可以:
let foo: Foo? = .bar
switch foo {
case .bar:
break
case .baz:
break
case nil:
break
这里,Optional 是 enum,Foo 是 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,也许可以?也许有我可以使用的注释?
【问题讨论】:
-
我想知道当你不使用泛型时它是否真的有效......
标签: swift enums switch-statement optional associated-value