Scala快速入门--apply语法糖

Posted 一只楠喃

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Scala快速入门--apply语法糖相关的知识,希望对你有一定的参考价值。

apply语法糖的功能及实现

  • 问题

      val a1 = Array(1,2,3,4,5,6)
      val a2 = new Array[Int](6)
    
    • 到底new不new?

apply方法的功能

  • 可以在实现构建Class的实例的时候,不用写new关键字

apply方法的实现

  • 在伴生对象Object中定义apply方法,支持重载,必须返回Class的实例

  • 当不写new时,编译器会自动判断,在伴生对象中寻找对应的apply方法,通过apply方法new对象来实现

  • 设计思想:缩短函数与对象的距离,让函数成为对象,让对象可以像函数一样使用

  • 代码实现

    class Person02(var name:String) {
      var age:Int = 20
      //辅助构造
      def this(name:String,age:Int){
        this(name)
        this.age = age
      }
    }
    
    object Person02{
      //传递一个参数,进行构造返回
      def apply(name: String): Person02 = new Person02(name)
      //传递两个个参数,进行构造返回
      def apply(name: String,age:Int): Person02 = new Person02(name,age)
    }
    
    object TestPerson02{
      def main(args: Array[String]): Unit = {
        //通过正常的构造来实现对象构建
        val p1 = new Person02("itcast")
        val p2 = new Person02("itcast",30)
        //通过语法糖来实现构造
        val p3 = Person02("heima")
        val p4 = Person02("heima",40)
      }
    }
    

点个赞嘛!在这里插入图片描述

以上是关于Scala快速入门--apply语法糖的主要内容,如果未能解决你的问题,请参考以下文章

实例 | 记录一次函数式编程语法糖拆解过程

scala语法糖

scala快速入门之基础篇-循环语法

使用Scala的强大api快速加工数据

Scala 中是不是有用于在匿名函数中绑定值的语法糖?

Scala快速入门--模式匹配