E4081

E4081#

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

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

错误示例:#

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

建议#

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

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

///|
test {
  f(Some(1), Some(2))
}

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

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

///|
test {
  g(Some(1), Some(2))
}