apply 與 unapply 方法
阿新 • • 發佈:2018-12-14
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") } } }