Понимание неприменимо без класса дела
Я пытаюсь понять пример ниже unapply
,
class Emp(name: String, age: Int)
object Emp {
def apply(name: String, age: Int): Emp = new Emp(name, age)
def unapply(emp: Emp): Option[(String, Int)] = Some(emp.name, emp.age)
}
К сожалению, это не с ошибкой компиляции Cannot resolve symbol name
, Cannot resolve symbol age
,
Принимая во внимание, когда я объявляю Emp
как case
класс, он отлично работает без каких-либо ошибок компиляции.
Может кто-нибудь объяснить, пожалуйста, причину этого?
Примечание: scalaVersion- 2.12.7
1 ответ
Решение
Ошибка говорит вам, что Scala не может видеть свойства в классе Emp
, чтобы разоблачить их, нужно что-то подобное (подробнее об этом здесь):
class Emp(val name: String, val age: Int)
более того, Some
принимает только один аргумент, поэтому вам нужно вернуть пару:
Some((emp.name, emp.age))