Я смотрел на чью-то code и заметилЧто такое символ @ в сопоставлении шаблонов scala?
case overdue @ PendingOperation(operation, _) => ......
Что это значит здесь символ @? Как это называется?
Я смотрел на чью-то code и заметилЧто такое символ @ в сопоставлении шаблонов scala?
case overdue @ PendingOperation(operation, _) => ......
Что это значит здесь символ @? Как это называется?
Это называется переменное связывание. Он связывает значение, сопоставляемое с переменной overdue
.
Таким образом, вы можете как разрушить значение по шаблону, сопоставляя его, так и позже ссылаться на него в целом.
Хотя это не особенно полезно в случае как
foo match {
case a @ Bar(baz, bar) => ...
}
, так как вы можете напрямую обратиться к foo
, она становится все более интересно в тех случаях, как
foo match {
case Bar(b @ Baz("hello", _), _) => ...
}
где вы связать внутренний матч к переменная.