48.scala编程思想笔记——统一访问方式和setter

48.scala编程思想笔记——统一访问方式和setter

欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/50447597
源码下载连接请见第一篇笔记。

先看一个例子如下:

import com.atomicscala.AtomicTest._

 

trait Base {

  def f1:Int

  def f2:Int

  val d1:Int

  val d2:Int

  var d3:Int

  var n = 1

}

 

class Derived extends Base {

  def f1 = 1

  val f2 = 1 //Was def, now val

  val d1 = 1

  // Can't dothis; must be a val:

  // def d2 = 1

  val d2 = 1

  def d3 = n

  defd3_=(newVal:Int) = n = newVal

}

 

val d = new Derived

d.d3 is 1 // Calls getter (line 20)

d.d3 = 42 // Calls setter (line 21)

d.d3 is 42

观察f1和f2定义,发现,在Scala中,可以将无参数且会产生结果的方法当做会产生同种类型结果的val处理。就是统一访问原则的示例。

反过来是不行的,如果基类型中有一个val,那么你不能使用def来实现它。

因为val表示一种承若,即事物不会变更,而def意味着在产生结果的过程中会执行代码。

抽象的var要求除了有getter之外,还需要有setter.

def d3_=(newVal:Int) = n = newVal

是setter的形式。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值