E4082#
变量并非在所有模式中都是绑定的。
在模式中使用 |
操作符时,必须在所有模式中绑定所有变量。如果一个变量在所有模式中都没有被绑定,则在匹配模式时,它将是自由变量,这是不允许的。
错误示例:#
enum E {
A(Int, Double)
B(Int)
}
fn f(value : E) -> Unit {
match value {
A(a, _) | B(_) => println("Hello") // Error: Variable a is not bound in all patterns.
}
}
建议#
fn f(value : E) -> Unit {
match value {
A(a, _) | B(a) => println("Hello")
}
}