考慮以下幾點:可變或不可變集?
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有任何區別嗎? 爲什麼斯卡拉讓你彎曲規則?如果說它是不可變的,它會不會更好呢?
謝謝。