分配两个 Scala class 个实例

assignment of two Scala class instances

class Counter {
  var counter: Int = 0
  def increaseCounter(): Unit =
    counter = counter + 1
}

var counter1 = new Counter
var counter2 = new Counter

counter1 = counter2

counter1.increaseCounter()
counter2.counter // => 1

我不是很明白为什么我只改变了counter1的counter2却改变了counter2的counter。 Scala class 实例只是指针吗?在这种情况下,counter1 和 counter2 指向同一个对象吗?

Scala 变量只是指针,所以:

counter1 = counter2

使counter1counter2都指向同一个实例。

这种隐藏的依赖性是您应尽可能避免 var 并始终创建新对象而不是修改现有对象的原因。

是的。就像在 Java 中一样。您所做的是浅拷贝。如果你想将一个的值分配给另一个,你需要一个深拷贝。你需要 counter1.counter = counter2.counter