分配两个 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
使counter1
和counter2
都指向同一个实例。
这种隐藏的依赖性是您应尽可能避免 var
并始终创建新对象而不是修改现有对象的原因。
是的。就像在 Java 中一样。您所做的是浅拷贝。如果你想将一个的值分配给另一个,你需要一个深拷贝。你需要
counter1.counter = counter2.counter
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
使counter1
和counter2
都指向同一个实例。
这种隐藏的依赖性是您应尽可能避免 var
并始终创建新对象而不是修改现有对象的原因。
是的。就像在 Java 中一样。您所做的是浅拷贝。如果你想将一个的值分配给另一个,你需要一个深拷贝。你需要 counter1.counter = counter2.counter