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))