【问题标题】:Mutable reference to immutable data对不可变数据的可变引用
【发布时间】:2014-07-21 02:32:45
【问题描述】:

我经常听到“对不可变数据的可变引用”这个术语。就我而言,这是针对 Scala 的。 如果您有一个可变引用,这是否意味着不可变数据是可变的?我很难理解它的理论和实践方面。例子会很棒。

【问题讨论】:

    标签: scala concurrency functional-programming immutability mutable


    【解决方案1】:

    这意味着您可以更改引用(更改引用的内容)但不能更改数据(更改引用背后的内容)。一旦对数据有多个引用,这种差异就很重要,这种情况在 Scala 这样的语言中一直存在(赋值、参数传递、添加到集合等)。例如:

    var x = List(1);
    var y = x;
    x = List(2);
    // y.head == 1
    // x.head == 2
    

    请注意,这种区别甚至适用于 Java:

    String x = "foo";
    String y = x;
    x = "bar";
    // y.equals("foo")
    // x.equals("bar")
    

    请注意,在这两个示例中,我们改变了引用 xy,但我们没有(事实上也不能)改变它们引用的对象。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多