我的机器学习教程「美团」算法工程师带你入门机器学习  以及 「三分钟系列」数据结构与算法  已经开始更新了,欢迎大家订阅~这篇专栏整合了这几年的算法知识,简单易懂,也将是我实体书的BLOG版。

欢迎大家扫码关注微信公众号「图灵的猫」,除了有更多AI、算法、Python相关文章分享,还有免费的SSR节点和外网学习资料。其他平台(微信/知乎/B站)也是同名「图灵的猫」,不要迷路哦~

Scala比Java更面向对象的一个方面是Scala没有静态成员。替代品是,Scala有单例对象:singleton object。

当单例对象与某个类共享同一个名称时,他被称作是这个类的伴生对象:companion object。你必须在同一个源文件里定义类和它的伴生对象。类被称为是这个单例对象的伴生类:companion class。类和它的伴生对象可以互相访问其私有成员。

定义单例对象不是定义类型(在Scala的抽象层次上说)

类和单例对象间的一个差别是,单例对象不带参数,而类可以。因为你不能用new关键字实例化一个单例对象,你没机会传递给它参数。每个单例对象都被作为由一个静态变量指向的虚构类:synthetic class的一个实例来实现,因此它们与Java静态类有着相同的初始化语法。Scala程序特别要指出的是,单例对象会在第一次被访问的时候初始化。

Scala 的apply 有2 张形式,一种是 伴生对象的apply ,一种是 伴生类中的apply,下面展示这2中的apply的使用。

示例代码:

class ApplyOperation {
}
class ApplyTest{def apply() = println("I am into spark so much!!!")def haveATry: Unit ={println("have a try on apply")}
}
object ApplyTest{def apply() = {println("I  am into Scala so much")new ApplyTest}
}
object ApplyOperation{def main (args: Array[String]) {val array= Array(1,2,3,4)val a = ApplyTest() //这里就是使用object 的使用a.haveATrya() // 这里就是 class 中 apply使用}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

运行结果

I am into Scala so much 
have a try on apply 
I am into spark so much!!!

object apply 是一种比较普遍用法。 主要用来解决复杂对象的初始化问题。同时也是单例

Scala中的Apply方法与伴生对象相关推荐

  1. Scala中的apply方法

    1.apply的场景 Scala中实例化一个类,可以不用new , 其原因 其实就是 apply 方法,具体原因 后边再讲: 在上句中Scala 生成Array对象, 会自动去调用 Array 这个伴 ...

  2. Scala中Object和Class区别(伴生类和伴生对象)

    文章目录 一,介绍 二,类Class 2.1 类定义 2.2 构造器 1.基本语法 2.构造器参数 2.3 私有成员和Getter/Setter语法 三,单例对象Object 四,伴生对象和伴生类介绍 ...

  3. 一文搞懂Pandas Dataframe中的apply方法

    告诉你如何在Pandas数据框架中使用apply()的方法. 扫码关注<Python学研大本营>,加入读者群,分享更多精彩 热点 在这篇文章中,我们将探索如何在DataFrame中使用ap ...

  4. scala中的split方法

    scala中的split方法 1.对split方法的细节观察 scala> val s = "eggs, milk, butter, Coco Puffs" s: Strin ...

  5. scala Object关键字声明的类直接调用方法、伴生对象

    object Student {def test(): Unit = {println("test")} } object T5 {def main(args: Array[Str ...

  6. 关于学习java函数式接口Function中的apply方法的一些感悟

    起因是这样的,学习函数式编程的时候学到了Function接口,对于其中的apply方法感到不解,下面贴上我的不解代码 在这里插public class Function接口 {public stati ...

  7. java apply 函数_Js(Javascript)中的apply方法的使用

    Function.apply(obj,args)方法能接收两个参数,简单说apply方法作用就是给类或方法中的this赋值.所以学会这个方法首先要知道this的作用.(this的用法可以看一下这个链接 ...

  8. panda中的apply()方法介绍

    1.apply()说明 作用范围:pandas中的Series和DataFrame 作用:通过使用apply()方法,我们可以调用自己定义的函数,使得代码结构更加清晰,简洁. 2.apply()的应用 ...

  9. (四)Scala中apply的应用

    class & object 概述:apply方法用于在Scala创建对象时,免new的操作,使代码更加简洁优雅 具体操作测试方法: class 和 object 可以类名相同. class ...

  10. Scala类的定义,主/辅构造器,以及方法中的变量定义,单例对象,伴生对象,Apply方法调用,应用程序对象

    1. 类 1.1. 类的定义 package cn.toto.scala.day2/*** 在Scala中,类并不用声明为public类型的.* Scala源文件中可以包含多个类,所有这些类都具有共有 ...

最新文章

  1. 初识C语言---(3)
  2. 研究人员利用非线性原理为机器人创造出类似昆虫的步态,脑机接口也可以使用...
  3. 最全的ASP.NET开源CMS汇总
  4. 再论数据科学竞赛中的Data Leakage
  5. Oracle8的不安全因素及几点说明
  6. (1)剑指Offer之斐波那契数列问题和跳台阶问题
  7. Android 中Base64的操作
  8. Perl程序设计中常用的函数
  9. vue列表渲染中key的作用_vue中:key的作用
  10. 更细日期2015年8月18日- Citrix vGPU解决方案注意事项
  11. ubuntu更新源 apt-get install Unable to locate package
  12. Android音量系统分析
  13. 与硅谷完全不同,非洲的人工智能产业是这样的……
  14. 通过无线AP轻松突破内网准入控制
  15. 为什么要用“设计模式”?(六大好处)
  16. 撩妹代码html,Web前端
  17. python DNA(算法竞赛刷题)
  18. RTX4060参数 RTX4060功耗 RTX4060 显卡性能
  19. C语言 输入三个字符串,由小到大输出
  20. am5718_TI Cortex-A15 AM5718 AM57x 多核异构开发板免费试用

热门文章

  1. linux 文件系统简介
  2. PythonDay7
  3. 最好用的JQuery插件集合以及组合拳
  4. fms +fme 视频直播
  5. 【转】Windows和Ubuntu双系统,修复UEFI引导的两种办法
  6. maven tomcat eclipse 配置 debug
  7. Server的Transfer和Response的Redirect
  8. sdut Message Flood(c++ map)
  9. C#调用c++Dll结构体数组指针的问题
  10. STM32Cubemx出现工程突然自动退出的问题