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