понимание неприменимо без класса дела - PullRequest
0 голосов
/ 10 декабря 2018

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

0 голосов
/ 10 декабря 2018

ошибка говорит вам, что scala не может видеть свойства в классе Emp.чтобы разоблачить их, вам нужно что-то вроде этого (подробнее об этом в здесь ):

class Emp(val name: String, val age: Int)

более того, Some принимает только один аргумент, поэтому вам нужно вернутьпара:

Some((emp.name, emp.age))
...