Scala vals 可以修改

标签 scala

我开始使用 Scala,我读到的第一件事就是 val 是:

variables that are assigned once and never change, and vars, variables that may change over their lifetime

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

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

如果我现在检查 foo 变量是否已排序,这意味着它已更改...而且如果我执行 print(foo),两者都有相同的,因此该变量指向同一个对象(我可能认为变量只是指向一个新对象)

谁能解释一下吗?

最佳答案

foo 变量指向的数组正在改变,但 foo 指向该 Array 的事实并没有改变。尝试重新分配 foo,您将看到您正在寻找的内容。

关于Scala vals 可以修改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8761040/

相关文章:

在 apache Spark 中加入列时,Java 相当于 scala 的 concat

scala - 在 scalaz 中免费实现

QtConcurrent的Scala类似物

regex - 如何在scala中拆分数字和字母?

scala - 尝试实现 `Absurd` 类型类时的隐式错误

scala - 如何将带有映射模板的索引放入带有elastic4s的 Elasticsearch 中?

scala - 映射到压缩的 HLists

eclipse - 神秘的 Scala + Eclipse 编译错误

Scala 不适用于特征

scala - 如何创建循环流?