37
Учитывая это Person
случай класс:Pattern Matching `@` Symbol
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
Возможно, мне не хватает значения/силы @
?
Вы используете точку с запятой для обращения к самому объекту. Интересно, почему точка с запятой не используется повторно для обозначения самого объекта? – Val
@Val: В его коде нет точек с запятой? – cdmckay
Полезно знать! Прежде чем читать этот ответ, я напишу так: «case p: Person, если p! = Bill => p.age' – erdavila