Понимание неприменимо без класса дела

Я пытаюсь понять пример ниже 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))
Другие вопросы по тегам