1. 程式人生 > >apply 與 unapply 方法

apply 與 unapply 方法

apply方法通常稱為注入方法,在伴生物件裡做一些初始化的操作。

apply方法的引數列表不需要和構造器的引數列表統一。

unapply方法通常稱為提取方法,使用unapply方法來提取固定數量的物件。

unapply方法會返回一個序列(option),內部產生一個Some物件來存放一些值。

apply方法和unapply方法會被隱式呼叫。

package test

/**
  * @author: whua 
  * @create: 2018/09/30 11:43
  */
class ApplyDemo(val name: String, var age: Int, var faceValue: Int) {

}

object ApplyDemo {
  def apply(name: String, age: Int, faceValue: Int): ApplyDemo =
    new ApplyDemo(name, age, faceValue)

  def unapply(applyDemo: ApplyDemo): Option[(String, Int, Int)] = {
    if (applyDemo == null) {
      None
    } else {
      Some(applyDemo.name, applyDemo.age, applyDemo.faceValue)
    }
  }
}

object Test {
  def main(args: Array[String]): Unit = {
    val applyDemo = ApplyDemo("yingying", 18, 98) //隱式呼叫apply方法

    applyDemo match {
      //隱式呼叫unapply方法
      case ApplyDemo("yingying", age, faceValue) => println(s"age:$age faceValue:$faceValue")
      case _ => println("No match")
    }
  }
}