Это потому, что case y
означает шаблон все и назовите переменную y
, поэтому он в основном создает новую переменную, которая ссылается на тот же объект.
Однако это плохое использование сопоставления с образцом.
Лучшей альтернативой будет:
def h(person: Person): String = person match {
case Person(_, age) if (age > 17) => "Adult"
case _ => "Younger" // Checking the age here is redudant.
}
Или просто используйте if / else
:
def h(person: Person): String =
if (person.age > 17) "Adult"
else "Younger"