首页 文章

Scala vals可以修改

提问于
浏览
6

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

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

但我很好奇为什么我能做到这一点:

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

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

任何人都可以澄清吗?

2 回答

  • 3

    foo 变量指向的数组正在发生变化,但 foo 指向 Array 的事实并未改变 . 尝试重新分配 foo ,您将看到您在寻找什么 .

  • 15

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

相关问题