更新声明为val的字段

时间:2016-07-09 19:18:01

标签: scala

我在网上课程中看到了这个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

这是一种更广泛使用的模式吗?

1 个答案:

答案 0 :(得分:2)

val表示您无法更改曾被data分配的。此是对数组的引用,因此data将始终指向同一个数组,但数组本身是可变的,您可以随时更改其内容。