Scala中的Apply方法与伴生对象
我的机器学习教程「美团」算法工程师带你入门机器学习 以及 「三分钟系列」数据结构与算法 已经开始更新了,欢迎大家订阅~这篇专栏整合了这几年的算法知识,简单易懂,也将是我实体书的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方法与伴生对象相关推荐
- Scala中的apply方法
1.apply的场景 Scala中实例化一个类,可以不用new , 其原因 其实就是 apply 方法,具体原因 后边再讲: 在上句中Scala 生成Array对象, 会自动去调用 Array 这个伴 ...
- Scala中Object和Class区别(伴生类和伴生对象)
文章目录 一,介绍 二,类Class 2.1 类定义 2.2 构造器 1.基本语法 2.构造器参数 2.3 私有成员和Getter/Setter语法 三,单例对象Object 四,伴生对象和伴生类介绍 ...
- 一文搞懂Pandas Dataframe中的apply方法
告诉你如何在Pandas数据框架中使用apply()的方法. 扫码关注<Python学研大本营>,加入读者群,分享更多精彩 热点 在这篇文章中,我们将探索如何在DataFrame中使用ap ...
- scala中的split方法
scala中的split方法 1.对split方法的细节观察 scala> val s = "eggs, milk, butter, Coco Puffs" s: Strin ...
- scala Object关键字声明的类直接调用方法、伴生对象
object Student {def test(): Unit = {println("test")} } object T5 {def main(args: Array[Str ...
- 关于学习java函数式接口Function中的apply方法的一些感悟
起因是这样的,学习函数式编程的时候学到了Function接口,对于其中的apply方法感到不解,下面贴上我的不解代码 在这里插public class Function接口 {public stati ...
- java apply 函数_Js(Javascript)中的apply方法的使用
Function.apply(obj,args)方法能接收两个参数,简单说apply方法作用就是给类或方法中的this赋值.所以学会这个方法首先要知道this的作用.(this的用法可以看一下这个链接 ...
- panda中的apply()方法介绍
1.apply()说明 作用范围:pandas中的Series和DataFrame 作用:通过使用apply()方法,我们可以调用自己定义的函数,使得代码结构更加清晰,简洁. 2.apply()的应用 ...
- (四)Scala中apply的应用
class & object 概述:apply方法用于在Scala创建对象时,免new的操作,使代码更加简洁优雅 具体操作测试方法: class 和 object 可以类名相同. class ...
- Scala类的定义,主/辅构造器,以及方法中的变量定义,单例对象,伴生对象,Apply方法调用,应用程序对象
1. 类 1.1. 类的定义 package cn.toto.scala.day2/*** 在Scala中,类并不用声明为public类型的.* Scala源文件中可以包含多个类,所有这些类都具有共有 ...
最新文章
- 初识C语言---(3)
- 研究人员利用非线性原理为机器人创造出类似昆虫的步态,脑机接口也可以使用...
- 最全的ASP.NET开源CMS汇总
- 再论数据科学竞赛中的Data Leakage
- Oracle8的不安全因素及几点说明
- (1)剑指Offer之斐波那契数列问题和跳台阶问题
- Android 中Base64的操作
- Perl程序设计中常用的函数
- vue列表渲染中key的作用_vue中:key的作用
- 更细日期2015年8月18日- Citrix vGPU解决方案注意事项
- ubuntu更新源 apt-get install Unable to locate package
- Android音量系统分析
- 与硅谷完全不同,非洲的人工智能产业是这样的……
- 通过无线AP轻松突破内网准入控制
- 为什么要用“设计模式”?(六大好处)
- 撩妹代码html,Web前端
- python DNA(算法竞赛刷题)
- RTX4060参数 RTX4060功耗 RTX4060 显卡性能
- C语言 输入三个字符串,由小到大输出
- am5718_TI Cortex-A15 AM5718 AM57x 多核异构开发板免费试用