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

在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

 

转载于:https://my.oschina.net/nenusoul/blog/803617

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值