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