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