我在网上课程中看到了这个class
定义:
class Img(val width: Int, val height: Int, private val data: Array[Int]) {
def this(w: Int, h: Int) = this(w, h, new Array(w * h))
def apply(x: Int, y: Int): Int = data(y * width + x)
def update(x: Int, y: Int, c: Int): Unit = data(y * width + x) = c
}
我很困惑。我们如何更新data
data(y * width + x) = c
,即使它被声明为val
?
这是一种更广泛使用的模式吗?
答案 0 :(得分:2)
val
表示您无法更改曾被data
分配的值。此值是对数组的引用,因此data
将始终指向同一个数组,但数组本身是可变的,您可以随时更改其内容。