我的一位同事向我展示了一个有趣的片段,其中一个对象内声明的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?
答案 0 :(得分:5)
您的addToCount
不会添加1(或任何内容)来计算。它计算count + 1
。 (与Java相同......)
我想你的意思是:
...
def addToCount { count += 1 }
...