package day03
/**
* apply和unapply方法
* apply方法通常称为注入方法,在伴生对象里做一些初始化的操作
* apply方法的参数列表不需要和构造器的参数列表统一
* apply方法通常被称为提取方法,使用unapply方法来提取固定数量的对象
* unapply方法会返回一个序列(Option),内部生产了一个Some对象来存放一些值
* apply方法和unapply会被隐式的调用
* @param name
* @param age
* @param faceValue
*/
class ApplyDemo(val name: String, var age: Int, var faceValue: Int) {
}
object ApplyDemo {
def apply(name: String, age: Int, gender: 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 Test2 {
def main(args: Array[String]): Unit = {
val applyDemo = ApplyDemo("lulu",21,0,90) //调用apply方法
applyDemo match {
case ApplyDemo("lulu",age,faceValue) => println(s"age: $age")
case _ => println("No match nothing")
}
}
}
网友评论