Scala vals可以修改

时间:2012-01-06 16:28:12

标签: scala

我开始玩Scala了,我读到的第一件事就是vals:

  

分配一次且永不改变的变量,以及可能在其生命周期内发生变化的变量

但我很好奇为什么我能这样做:

val foo = Array(1, 3 ,2)
scala.util.Sorting.quickSort(foo)

如果我检查foo变量现在是有序的,这意味着它已经改变了...如果我打印(foo),两者都有相同的,所以变量指向同一个对象(我本以为变量只是指向一个新对象)

有人可以澄清吗?

2 个答案:

答案 0 :(得分:15)

foo变量指向的数组正在发生变化,但foo指向Array的事实不会发生变化。尝试重新分配foo,您将看到您要查找的内容。

答案 1 :(得分:3)

问题不在于val,而在于Array。虽然值是不可更改的,但数组是。如果您希望停止此操作,可以使用包不可变的类。