Owe*_*wen 2 scala immutability
考虑一个简单的类和一个(不可变的)值实例:
class MyClass (var m: Int) {}
val x : MyClass = new MyClass(3)
Run Code Online (Sandbox Code Playgroud)
由于m被声明为变量(var),因此m为mutable。但是,由于x被声明为值,因此它是不可变的。那么是x.m可变的还是不变的?
x.m 是可变的。
以下代码有效:
class MyClass (var m: Int) {}
val x : MyClass = new MyClass(3)
println(x.m)
x.m = 7
println(x.m)
Run Code Online (Sandbox Code Playgroud)
val拥有一个不能更改的变量,但是在这种情况下,它不能使其保持不变。实际上,它可以具有可变的内部字段(在这种情况下,通过var)。从概念上讲,VAL UE x拥有一个不变的指针的变量x.m(即你不能改变容器x.m指),但整数本身(即容器的内容)是可变的。