理解 unapply 没有案例 class
understanding unapply without case class
我正在尝试下面的例子来理解 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
class 时,它工作得很好,没有任何编译错误。
有人可以解释一下这背后的原因吗?
注意:scalaVersion- 2.12.7
错误告诉你,scala 看不到 class Emp
中的属性。为了暴露它们,你需要这样的东西(here 中有更多内容):
class Emp(val name: String, val age: Int)
另外,Some
只接受一个参数,所以你需要return一对:
Some((emp.name, emp.age))
我正在尝试下面的例子来理解 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
class 时,它工作得很好,没有任何编译错误。
有人可以解释一下这背后的原因吗?
注意:scalaVersion- 2.12.7
错误告诉你,scala 看不到 class Emp
中的属性。为了暴露它们,你需要这样的东西(here 中有更多内容):
class Emp(val name: String, val age: Int)
另外,Some
只接受一个参数,所以你需要return一对:
Some((emp.name, emp.age))