文档章节

Scala学习之类和属性篇(四):带有默认值的构造函数

阿拉德大陆的魔法师
 阿拉德大陆的魔法师
发布于 2016/12/10 12:01
字数 333
阅读 205
收藏 0

在Scala中允许你给构造函数参数提供一个默认值,那么当你不指定参数值的时候那么构造函数就会使用默认值。

scala> class Socket(val timeout: Int = 10000)
defined class Socket

scala> val s = new Socket()
s: Socket = Socket@311d617d

scala> s.timeout
res0: Int = 10000

scala> val s = new Socket(5000)
s: Socket = Socket@22a71081

scala> s.timeout
res1: Int = 5000

你也可以使用辅助构造函数来实现一样的效果。

scala> class Socket(val timeout:Int) {
     |   def this() = this(10000)
     |   override def toString = s"timeout: $timeout"
     | }

带默认值的多参数构造函数

scala> class Socket(val timeout: Int = 1000, val port: Int = 8888) {
     |   override def toString = s"timeout=$timeout port=$port"
     | }
defined class Socket

不指定构造函数参数值,那么系统就会使用默认参数值,但是你必须按构造函数顺序指定参数值。

scala> val s = new Socket()
s: Socket = timeout=1000 port=8888

scala> val s = new Socket(3000)
s: Socket = timeout=3000 port=8888

scala> val s = new Socket(3000, 8080)
s: Socket = timeout=3000 port=8080

如果我们只想指定port参数值怎么办呢,你可以使用参数=参数值的方式来调用构造函数。并且使用这种方式我们打乱构造函数参数顺序。

scala> val s = new Socket(port=8080)
s: Socket = timeout=1000 port=8080

scala> val s = new Socket(port=8080, timeout=1000)
s: Socket = timeout=1000 port=8080

 

© 著作权归作者所有

阿拉德大陆的魔法师
粉丝 27
博文 91
码字总数 83019
作品 0
西城
程序员
私信 提问
Scala学习目录

字符串篇 1.1 字符串的比较 1.2 使用多行字符串 1.3 字符串的切分 1.4 插值函数 1.5 逐字符处理字符串 1.6 使用正则表达式 1.7 访问字符串特定位置的字符 1.8 使用隐式方法来扩展字符串类 2....

阿拉德大陆的魔法师
2016/04/20
367
0
Scala学习之类和属性篇(五):getter和setter方法

Scala会根据你定义属性时候使用的关键字:var,val,private来选择是否自动生成getter和setter方法。并且不允许你重写Scala的setter和getter方法。如果你要重写这两个方法你会看到如下编译错...

阿拉德大陆的魔法师
2016/12/10
1K
0
Scala学习之类和属性篇(三):单例与私有构造函数

我们知道,要想使用单例那么就必须定义私有构造函数来防止从类的外部来创建类的实例。在Scala中你也可以通过private关键字定义类的私有主构造函数来防止从类的外部创建类的实例。 你可能发现...

阿拉德大陆的魔法师
2016/12/09
76
0
Java/Scala互操作实践 1:基础操作

本文将以Spring Boot为例,介绍下实际工作中的Java/Scala互操作。在提高个人效率、满足自我追求的情况下更多的照顾到团队不同人的实际。同时也是想说明,在同一个工程里混用Java和Scala语言是...

羊八井
2016/10/10
2.3K
10
Scala学习之类和属性篇(一):定义类的主构造方法

在Scala中直接在类名后面跟上参数,即可定义类的主构造方法。 接下来我们通过主构造方法来实例化这个类,看看发生了什么。所有定义在类体内部的可执行性代码都被执行了,也就是说整个类内部都...

阿拉德大陆的魔法师
2016/12/08
133
0

没有更多内容

加载失败,请刷新页面

加载更多

Centos7 安装zabbix-agent

rpm -i https://repo.zabbix.com/zabbix/4.2/rhel/6/x86_64/zabbix-release-4.2-2.el6.noarch.rpm 可以到https://repo.zabbix.com/zabbix找到对应的版本 yum install zabbix-agent -y 出现E......

abowu
昨天
8
0
文本编辑器GNU nano 4.4 发布

GNU nano 4.4 "Hagelslag" 更新日志: 启动时,光标可以放在第一个或最后一个出现位置 字符串前面带有+/string 或 +?string的字符串。 发生自动硬包装时((--breaklonglines),任何前导引号...

linuxCool
昨天
7
0
你知道字节序吗

字节序 最近在调一个自定义报文的接口时,本来以为挺简单的,发现踩了好几个坑,其中一个比较“刻骨铭心”的问题就是数据的字节序问题。 背景 自定义报文,调用接口,服务端报文解析失败 iO...

杭城小刘
昨天
3
0
设计模式之依赖倒置原则

方法

东风破2019
昨天
6
0
关于如何通过模拟器完成模拟步数提升傻瓜式解决方案(囧)

因为对Android开发不太了解,也没去问朋友所以误打误撞找到的一个提升步数的解决方案,当然只是针对某安APP运动RUN的解决方式吧。 对Android不太了解,所以找了很多的解决方案来看看能不能破...

华山猛男
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部