考虑以下几点:可变或不可变集?
scala> val myset = Set(1,2)
myset: scala.collection.immutable.Set[Int] = Set(1, 2)
scala> myset += 3
<console>:9: error: reassignment to val
myset += 3
^
scala> var myset = Set(1,2)
myset: scala.collection.immutable.Set[Int] = Set(1, 2)
scala> myset += 3
scala> myset
res47: scala.collection.immutable.Set[Int] = Set(1, 2, 3)
在一种情况下,我可以添加“亚历克斯”而在另一个我不能。 我知道val和var之间的区别。然而,在这两种情况下我都困惑了,Scala告诉我这个Set是不可变的,但它允许不同的行为。
我不想只是因为在oncase myset是一个val,在一个它是一个变种。我想得到更深入的回答,而不是解释为什么在这两种情况下Scala都说myset是一个不可变的集合,但两者的处理方式不同。因为这是违反直觉的。
例如,使用可变集合并将不可变集合声明为var有任何区别吗? 为什么斯卡拉让你弯曲规则?如果说它是不可变的,它会不会更好呢?
谢谢。