1

どちらもデフォルト値を持つ別の可変マップを含む可変マップがあります。同封のマップの 1 つのキーに値を割り当てた後、そのデフォルト値が変更されたようです。つまり、anotherDefault の値が Map(1 -> default) であり、Map(1 -> something) ではないことを期待していました。

なぜこうなった?

scala> import scala.collection.mutable.{Map => MMap}
import scala.collection.mutable.{Map=>MMap}

scala> val amap = Map[Int, MMap[Int, String]]().withDefaultValue(MMap().withDefaultValue("default"))
amap: scala.collection.immutable.Map[Int,scala.collection.mutable.Map[Int,String]] = Map()

scala> val bmap = amap(2)
bmap: scala.collection.mutable.Map[Int,String] = Map()

scala> bmap(1)
res17: String = default

scala> bmap(1) = "something"

scala> val anotherDefault = amap(3)
anotherDefault: scala.collection.mutable.Map[Int,String] = Map(1 -> something)
4

1 に答える 1