dat*_*ser 1 concurrency functional-programming scala mutable immutability
我经常听到"对不可变数据的可变引用"这个术语.就我而言,这是针对Scala的.如果你有一个可变引用,这不意味着不可变数据是可变的吗?我很难理解它的理论和实践方面.例子很棒.
小智 5
这意味着您可以改变引用(更改它引用的内容)但不改变数据(更改引用后面的内容).只要有多个数据引用就会产生差异,这种情况一直发生在像Scala这样的语言中(赋值,参数传递,添加到集合等).例如:
var x = List(1);
var y = x;
x = List(2);
// y.head == 1
// x.head == 2
Run Code Online (Sandbox Code Playgroud)
请注意,这种区别甚至适用于Java:
String x = "foo";
String y = x;
x = "bar";
// y.equals("foo")
// x.equals("bar")
Run Code Online (Sandbox Code Playgroud)
需要注意的是在这两个例子中,我们突变引用x和y,但我们没有(实际上不可能)发生变异,他们参考的对象.
| 归档时间: |
|
| 查看次数: |
141 次 |
| 最近记录: |