簡體   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