Подтвердить что ты не робот

Соответствие шаблону `@` Символ

Учитывая этот класс Person:

scala> case class Person(name: String, age: Int) {}
defined class Person

... и этот экземпляр

scala> val b = Person("Kevin", 100)
b: Person = Person(Kevin,100)

Есть ли причина предпочесть этот код (с @)

scala> b match {
     |    case p @ Person(_, age) => println("age")
     |    case _ => println("none")
     | }
age

... по следующему?

scala> b match {
     |    case Person(_, age) => println("age")
     |    case _ => println("none")
     | }
age

Возможно, мне не хватает значения/мощности @?

4b9b3361

Ответ 1

Вы включаете только @, когда хотите также иметь дело с самим объектом. Следовательно:

that match{
  case p @ Person(_, age) if p != bill => age
  case Person(_, age) => age - 15
  case _ => println("Not a person")
}

В противном случае нет реальной точки в ее включении.