Scala中的vals可以被修改。

33 浏览
0 Comments

Scala中的vals可以被修改。

我开始接触Scala,其中我最初读到的一件事是:vals是:

只赋值一次且永不更改的变量,而vars是在其生命周期中可能更改的变量

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

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

如果我现在检查foo变量,它是有序的,这意味着它已经发生了变化……即使我打印foo,它们都是相同的,因此该变量指向相同的对象(我本来认为该变量只指向一个新对象)

有人能解释一下吗?

admin 更改状态以发布 2023年5月23日
0
0 Comments

问题不在于val,而在于Array。尽管值是不可改变的,但数组是可以改变的。如果想要停止这个操作,可以使用immutable包中的类。

0
0 Comments

foo变量指向的数组在改变,但是foo指向那个Array的事实并没有改变。尝试重新分配foo,你就会看到你想要的结果。

0