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", _), _) => ...
}

将内部匹配项绑定到变量的位置。