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 的計數器。Scala 類實體是否只是指標,在這種情況下 counter1 和 counter2 指向同一個物件?
uj5u.com熱心網友回復:
Scala變數只是指標,所以:
counter1 = counter2
使得無論counter1并counter2指向同一個實體。
這種隱藏的依賴關系是為什么你應該盡可能避免var并且總是創建新物件而不是修改現有物件的原因。
uj5u.com熱心網友回復:
是的。就像在 Java 中一樣。你所做的是一個淺拷貝。如果要將一個的值分配給另一個,則需要一個深拷貝。你需要 counter1.counter = counter2.counter
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/419679.html
標籤:
上一篇:這兩個在C編程語言中是否相同?
下一篇:如何在網格內制作方形跟隨滑鼠游標
