【问题标题】:Scala vals can be modifiedScala vals 可以修改
【发布时间】:2023-03-26 14:55:01
【问题描述】:

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

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

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

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

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

谁能澄清一下?

【问题讨论】:

  • this 可以帮助你

标签: scala


【解决方案1】:

foo 变量指向的数组正在改变,但foo 指向Array 的事实并没有改变。尝试重新分配foo,你会看到你在找什么。

【讨论】:

  • 当然,我今天不是很清楚,指向对象的指针不能改变,但对象的值可以,所以我可以做一个 foo(0) = 5。谢谢
  • @jasalguero FYI scala 确实提供了不可变的集合
【解决方案2】:

问题不在于 val,而在于 Array。尽管值是不可更改的,但数组是。如果你想阻止这种情况,你可以使用包中的一个类 immutable。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-29
    • 2014-12-18
    相关资源
    最近更新 更多