41 嵌套模式
模式可以匹配另一个变体负载中的变体。
norm
enum Delivery {
Pending,
Sent(String code)
}
enum Event {
Updated(Delivery delivery),
Ignored
}
String describe(Event event) {
return switch event {
case Updated(Sent(String code)) { break code }
case Updated(_) { break "waiting" }
case Ignored { break "ignored" }
}
}
main() {
printLine(describe(event: Event.Updated(delivery: Delivery.Sent(code: "N-42"))))
printLine(describe(event: Event.Updated(delivery: Delivery.Pending)))
}预期输出:
text
N-42
waiting第一个分支仅在 Updated 事件包含 Sent 时取出编码。第二个分支处理其他 Updated 配送状态,最后处理 Ignored;各分支按顺序匹配,不会贯穿执行。
动手试试:交换前两个 case,观察编译器是否报告不可达分支。
详细规则:参考。