E4081

E4081#

标识符在同一个模式绑定多次。

不可能将值绑定到一个标识符中,因为它们可能具有不同的值。如果想要遮蔽第一个标识符,可以使用 _ 来丢弃它。

错误示例:#

fn f(a : Int?, b : Int?) -> Unit {
  match (a, b) {
    (Some(a), Some(a)) => println("Some(\{a})")
    //    ^ Error: The identifier a is bound more than once in the same pattern.
    _ => println("None")
  }
}

建议#

对第二个标识符使用不同的名称。

fn f(a : Int?, b : Int?) -> Unit {
  match (a, b) {
    (Some(a), Some(b)) => println("Some(\{a}), Some(\{b})")
    _ => println("None")
  }
}

如果你想要一个类似遮蔽的行为,你可以显式地放弃第一个 a 使用 _

fn f(a : Int?, b : Int?) -> Unit {
  match (a, b) {
    (Some(_), Some(a)) => println("Some(\{a})")
    _ => println("None")
  }
}