美文网首页
apply和unapply方法

apply和unapply方法

作者: lehuai | 来源:发表于2018-01-03 10:04 被阅读0次
    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")
        }
      }
    }
    

    相关文章

      网友评论

          本文标题:apply和unapply方法

          本文链接:https://www.haomeiwen.com/subject/frthnxtx.html