'val'会产生可变数据吗?

Fed*_*ans -1 scala

在REPL中我们输入以下命令

scala> val p = 1 << 1
p: Int = 2
Run Code Online (Sandbox Code Playgroud)

再次

scala> val p = 1 << 2
p: Int = 4
Run Code Online (Sandbox Code Playgroud)

我的问题是,我读到val是不可变的.但在这种情况下,价值正在改变.那么有人可以告诉我为什么.这真的是变异的一个例子.请帮忙

Nya*_*vro 6

此行为仅出现在REPL中.如果您尝试在Scala代码中定义两次val,则会出现编译错误.在REPL中,val的第二个定义只是阴影p的前一个值