如果我正在写作
val a = 1
然后它会给我
a : Int = 1
如果我正在写
a = 2
它会说重新分配给val,我很好用,好吧我们不能将值重新分配给scala中的val声明变量。
现在,如果我们来scala数组,如果我们将变量声明为val并指定长度为3的Scala List,那么我们不能更改长度,但我们可以更改Scala数组中各个元素的值。好吧也有意义,因为在这种情况下变量仍然是不可变的,但数组内部是可变的。
现在问题是scala列表,如果我声明了像
这样的scala列表val OneTwo = List(1,2)
将导致他输出以下内容:
oneTwo: List[Int] = List(1,2)
好的,现在试试这个:
val OneTwo = List("One","Two")
将导致他输出以下内容:
oneTwo: List[String] = List("One","Two")
我不知道为什么list变量,即oneTwo是可变的,我们可以将它重新分配给一种新的对象。为什么它的行为就像java String一样,对象变为不可变,但分配给它的变量可以分配给一个新的String对象。如果是这样,那么在这里将其声明为val的效用是什么。
答案 0 :(得分:0)
我猜你是在scala REPL中尝试这个。 您无法重新分配val,但可以在REPL中重新声明它。
重新声明也适用于变量
VolumeProviderCompat