以下の実施例なぜval x = mutable.Map(...)がスカラーで可変ですか?
ケース1考慮:Xはval
型であるので、私はケース1を理解することができ
scala> val name = new scala.collection.mutable.HashMap[String, Int]
name: scala.collection.mutable.HashMap[String,Int] = Map()
scala>name("Hello") = 1
scala>name
res1: scala.collection.mutable.HashMap[String,Int] = Map(Hello -> 1)
:
>scala val x = 1
x:Int = 1
>scala x = 2
<console>:11: error: reassignment to val
x=2
^
がケース2。ケース2の場合、name
もval
タイプですが、name
は変更可能です。それを説明する方法?
に
することができます
reference/point
としてvar
でそれを定義した場合あなたが**再割り当てしている最初のケース** 'x'。後者の場合、**あなたは**名前を変更しています。 'name'は同じ' Map'を参照しています。 'name = ...'と書いてみてください。 –変更可能なマップが変更可能である理由を尋ねていますか? –
@JörgWMittagいいえ、 'mutable map'が' mutable'であることは理解できますが、なぜそれが 'val-type'変数に代入できるのかわかりません。 'Answers'は' name'は '可変HashMap'への'ポインタ 'であり、***参照/別のオブジェクトへの***の再割り当てはできません。 – xyz