美文网首页
Scala解密:Apply方法与构造函数

Scala解密:Apply方法与构造函数

作者: M_Learning | 来源:发表于2017-06-19 11:43 被阅读0次

    1. apply 方法

    当我们想使用如下形式的表达式时,我们通常会定义和使用对象的apply方法

    Object(参数1 , 参数2,...)   ,例如 Array("one" , "two" , "three").   我们来看如下例子,来解读apply方法和构造器的区别

    apply方法与构造器

    上述代码实现一个新建账号的一个功能  , 分别展示了主构造器  与 apply方法  我们可以通过以下两种方式来实现:

    val   account =  new Account(23456,  200.0)     // 对应调用的构造函数

    val  account = Account(23456,  200.0)   //对应调用的apply方法

    有人会问,有了构造函数,为什么还要用apply方法,主构造函数和辅助构造函数,不是适应多种参数类型的方法调用吗?   答案是肯定的,  主构造函数+ 辅助构造函数确实能够实现和apply方法一样的功能。  但是 我们使用apply方法能够更加简洁。 比如我们想使用嵌套表达式,如下

    Array(Array(3) , Array(4 , 5) , Array(6, 7, 8) ). 

    这种时候就体现出apply方法的作用来,  构建对象是可以直接使用Array(3)的方式 来构建一个含有元素3 的数组对象。 不需使用  new Array(1)  ,  然后在赋值的方式。

    注:  Array(3)  和 new Array(3) 是表达不一样的含义,  Array(3) 创建了一个含有一个元素3 的数组,而 new Array(3)  则是 创建了一个  函数三个元素为  NULL 的 数组。 

    总结:  使用apply方法  ,你可以 实现Object(参数1 , 参数2,...)  ,Object为你定义的类名或对象名称 在上述例子中为account ,  apply方法可以让你 Object(参数1 , 参数2,...) 方式来定义你自己想实现的功能。也就是说apply方法体内可以调用构造器进行初始化,  可以定义你自己的方法体。他和 其他方法没什么不同, 唯一区别是他可以显示调用(对象.apply()),也可以通过Object(参数1 , 参数2,...)。  而构造器的作用式在 new 一个对象的时候进行对象初始化的时候使用。

    Scala 简书第一篇,  写的不好, 不全,以后陆续总结吧。

    相关文章

      网友评论

          本文标题:Scala解密:Apply方法与构造函数

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