Scala模式匹配中的@符号是什么?
What is @ symbol in scala pattern matching?
我一直在看某人的 code 并注意到这个
case overdue @ PendingOperation(operation, _) => ......
这里的@符号是什么意思?怎么称呼?
这叫做变量绑定。
它将匹配的值绑定到 overdue
变量。
通过这种方式,您既可以通过对其进行模式匹配来解构该值,又可以在以后将其作为一个整体进行引用。
虽然在
这样的情况下它不是特别有用
foo match {
case a @ Bar(baz, bar) => ...
}
因为你可以直接引用foo
,所以在
这样的情况下会更有趣
foo match {
case Bar(b @ Baz("hello", _), _) => ...
}
将内部匹配项绑定到变量的位置。
我一直在看某人的 code 并注意到这个
case overdue @ PendingOperation(operation, _) => ......
这里的@符号是什么意思?怎么称呼?
这叫做变量绑定。
它将匹配的值绑定到 overdue
变量。
通过这种方式,您既可以通过对其进行模式匹配来解构该值,又可以在以后将其作为一个整体进行引用。
虽然在
这样的情况下它不是特别有用foo match {
case a @ Bar(baz, bar) => ...
}
因为你可以直接引用foo
,所以在
foo match {
case Bar(b @ Baz("hello", _), _) => ...
}
将内部匹配项绑定到变量的位置。