E4082

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")
  }
}