Scala 没有案例类的理解

Scala 没有案例类的理解,scala,unapply,Scala,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) } 不幸的是,它失败了,出现编译错误无法解析符号名称,无法解析符号年龄 然而,当我将Emp声明

我正在尝试下面的示例以理解
不适用的

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)
}
不幸的是,它失败了,出现编译错误
无法解析符号名称
无法解析符号年龄

然而,当我将
Emp
声明为
case
类时,它工作得非常好,没有任何编译错误

有人能解释一下这背后的原因吗


注意:scalaVersion-2.12.7

错误告诉您,scala无法看到类
Emp
中的属性。为了公开它们,您需要这样的smth(更多信息,请参阅):

此外,
Some
只接受一个参数,因此需要返回一对:

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

正确的。。。需要使用
val
声明它才能在类外公开。@Mukeshprajapati Scala类的行为类似于Java类,因为它们需要getter和setter才能访问其参数。将它们声明为
val
似乎绕过了这一点,将类声明为
case类也是如此。
Some((emp.name, emp.age))