scala apply方法 笔记

原文出处:http://blog.csdn.net/pzw_0612/article/details/48576569

-----------------------------------------------------

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

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

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

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

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

示例代码:

package day26class Apply5 {}class ApplyTest {def apply() = println("I am into class ApplyTest!!!")def haveATry: Unit = {println("have a try on apply")}
}object ApplyTest {def apply() = {println("I am into object ApplyTest!!!")}
}object Apply5 {def main(args: Array[String]): Unit = {val array = Array(1, 2, 3, 4)val a =new ApplyTest()a.haveATrya() // 这里就是 class 中 apply使用val b=ApplyTest()// 这里就是 object 中 apply使用}
}





运行结果

have a try on apply
I am into class ApplyTest!!!
I am into object ApplyTest!!!

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




本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/538602.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

转:6.1海量数据处理

本文转自看云,原文地址请移步:https://www.kancloud.cn/kancloud/the-art-of-programming/41608 偶然闲游,偶遇某一站点,发现这里写的关于海量数据处理相关的思路还挺不错,所以在这里采摘收藏,如有侵权之处还请评论区或…

flash一个按钮控制动画_flutter闪屏过渡动画,闪光占位动画

在程序设计的理念中,讲究一切都来源于物理世界,在现实世界中,人们在每接触到一个新的事物或者说在手指触碰到一个事物时,总是心里默许期望有一个反馈效果,这就是来源于心底深处常常被人忽略的一个潜在期望。在程序的世…

动态改变_Excel中如何动态改变可编辑区域?

有这样一个工作场景:我们制作一个工作报表模板给同事填写数据,这个工作表格只可以在预设的可编辑区域编辑,其它都是受密码保护的,而且这个可编辑区域是随着日期——工作周的变化而发生变化的。也就是说在不同的工作周可编辑的区域…

java集合框架之ArrayList与LinkedList的区别

参考http://how2j.cn/k/collection/collection-arraylist-vs-linkedlist/690.html#nowhere ArrayList和LinkedList的区别 ArrayList 插入,删除数据慢LinkedList, 插入,删除数据快ArrayList是顺序结构,所以定位很快,指哪…

Spark集群安装

Spark是独立的,所以集群安装的时候,不像hive,hbase等需要先安装hadoop,除非文件保存在hadoop上,才需要安装hadoop集群。 如果虚拟机安装,点击阅读推荐配置 前提环境: 1、安装了JDK1.7及以上版…

列表逆序排序_【Python自学笔记】集合——列表

list列表类型是一个与元组tuple类似的有序序列。构造函数是list()切片# 切片 fruit ["Apple", "Hawthorn", "Loquat", "Medlar", "Pear", "Quince"] print(fruit[:2]) print(fruit[-1])语法与字符串和元组中的一…

esp8266 阿里云 arduino_NUCLEO-G071RB通过WiFi与NB连接阿里云

开箱体验试用背景去年年初,有新项目要让移动式容器设备的监控数据上云,选型时主要考虑三个系列STM32L0、STM32G0和STM8。最初有意向选用STM32L052RB,主要是为了满足低功耗需求。恰逢G0系列上市,价格亲民,性能却要高很多…

“云上金融,智创未来” 腾讯“云+未来”峰会金融专场在广州举行

5月24日,腾讯“云未来“峰会金融专场在广州举行。来自央行、腾讯公司以及银行、证券、保险、互金公司等腾讯金融云的合作伙伴代表以及行业专家,共同分享了智慧金融、企业数字化转型、腾讯金融云业务布局以及与合作伙伴取得的最新成绩等话题。活动现场&am…

Spark算子reduceByKey深度解析

原文地址:http://blog.csdn.net/qq_23660243/article/details/51435257 -------------------------------------------- 最近经常使用到reduceByKey这个算子,懵逼的时间占据多数,所以沉下心来翻墙上国外的帖子仔细过了一遍,发现一…

绕固定轴分解_3轴 / 5轴 / 3+2到底是什么......??

一、 什么是32定位加工在一个三轴铣削程序执行时,使用五轴机床的两个旋转轴将切削刀具固定在一个倾斜的位置,32加工技术的名字也由此而来,这也叫做定位五轴机床,因为第四个轴和第五个轴是用来确定在固定位置上刀具的方向&#xff…

启动spark shell

spark集群安装教程:http://blog.csdn.net/zengmingen/article/details/72123717 启动spark shell. 在spark安装目录bin文件夹下 ./spark-shell --master spark://nbdo1:7077 --executor-memory 2g --total-executor-cores 2 参数说明: --master spark…

python发送excel文件_Python操作Excel, 开发和调用接口,发送邮件

接口开发: importflaskimporttoolsimportjson,redisimportrandom server flask.Flask(__name__)#新建一个服务,把当前这个python文件当做一个服务 ip 118.24.3.40passwordHK139bc&*r redis.Redis(hostip,passwordpassword,port6379,db10, decode_res…

go conn 读取byte数组后是否要_【技术推荐】正向角度看Go逆向

Go语言具有开发效率高,运行速度快,跨平台等优点,因此正越来越多的被攻击者所使用,其生成的是可直接运行的二进制文件,因此对它的分析类似于普通C语言可执行文件分析,但是又有所不同,本文将会使用…

Confluence 6 选择一个外部数据库

2019独角兽企业重金招聘Python工程师标准>>> 注意: 选择一个合适的数据库通常需要花费很多时间。同时 Confluence 自带的 XML 数据备份和恢复功能通常也不适合合并和备份有大量数据的数据库。如果你想在系统运行后进行数据合并,你通常需要使用…

python爬取内容乱码_python爬取html中文乱码

环境: python3.6 爬取代码: import requests url https://www.dygod.net/html/tv/hytv/ req requests.get(url) print(req.text) 爬取结果: / _-如上,title内容出现乱码,自己感觉应该是编码的问题,但是不…

前端每日实战:34# 视频演示如何用纯 CSS 创作在文本前后穿梭的边框

效果预览 按下右侧的“点击预览”按钮可以在当前页面预览,点击链接可以全屏预览。 https://codepen.io/comehope/pen/qYepNv 可交互视频教程 此视频是可以交互的,你可以随时暂停视频,编辑视频中的代码。 请用 chrome, safari, edge 打开观看。…

spark shell中编写WordCount程序

启动hdfs 略http://blog.csdn.net/zengmingen/article/details/53006541 启动spark 略安装:http://blog.csdn.net/zengmingen/article/details/72123717 spark-shell:http://blog.csdn.net/zengmingen/article/details/72162821准备数据 vi wordcount.t…

mysql计算机二级选择题题库_全国计算机二级mysql数据库选择题及答案

全国计算机二级mysql数据库选择题及答案选择题是全国计算机二级mysql考试里的送分题,下面小编为大家带来了全国计算机二级mysql数据库选择题及答案,欢迎大家阅读!全国计算机二级mysql数据库选择题及答案1) 函数 max( ) 表明这是一个什么函数?…

git add 撤销_更科学地管理你的项目,Git 简明教程(二)

修改文件内容上回说到,我们已经成功创建并提交了一个 README.md 文件到 FirstGit 版本库中1、修改文件现在我们更改 README.md 内容2、查看版本库状态该文件夹内右键运行 Git Bash Here执行命令 git statusGit 提示我们的改动还没有 commit,并且它给出了…

Eclipse中Copy Qualified Name复制类全名解决办法

原文链接:http://www.cnblogs.com/zyh1994/p/6393550.html ----------------------------------------------------------------------------------------------- Eclipse中 用Copy Qualified Name复制类全名时 总是这样的/struts1/src/me/edu/HelloAction.java很不…