不能在scala中改变对象中的var吗?

时间:2013-07-02 02:12:00

标签: scala object immutability var mutation

我的一位同事向我展示了一个有趣的片段,其中一个对象内声明的var没有被对象的成员变异。如果有人解释为什么这样做会很好。代码如下:

object SomeObject{
  var count = 1
  def addToCount = count + 1
  def printCurrentCount:Unit = {addToCount;println(count)}
}

// Exiting paste mode, now interpreting.

defined module SomeObject

scala> SomeObject.printCurrentCount
1

printCurrentCount不应该将变异的var计数打印为2?

1 个答案:

答案 0 :(得分:5)

您的addToCount不会添加1(或任何内容)来计算。它计算count + 1。 (与Java相同......)

我想你的意思是:

...
def addToCount { count += 1 }
...