繁体   English   中英

在没有案例类的情况下理解unapply

[英]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 nameCannot 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM