[英]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
类时,它可以完美地工作,没有任何编译错误。
有人可以解释一下背后的原因吗?
注意:scalaVersion- 2.12.7
错误告诉你,scala无法在类Emp
看到属性。 为了揭露它们,你需要像这样的smth(在这里更多关于此):
class Emp(val name: String, val age: Int)
而且, Some
只接受一个参数,所以你需要返回一对:
Some((emp.name, emp.age))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.