-1
任何人都可以解釋默認值在可變映射中的工作原理嗎?withDefaultValue in mutable.Map的行爲
scala> val mmap = mutable.Map[String, mutable.Set[String]]().withDefaultValue{mutable.Set[String]()}
mmap: scala.collection.mutable.Map[String,scala.collection.mutable.Set[String]] = Map()
scala> mmap("a") += "b"
res1: scala.collection.mutable.Set[String] = Set(b)
地圖是空的,沒有鍵。
scala> mmap
res2: scala.collection.mutable.Map[String,scala.collection.mutable.Set[String]] = Map()
但是我剛剛編輯的關鍵是顯示數據。
scala> mmap("a")
res3: scala.collection.mutable.Set[String] = Set(b)
爲什麼res2
空地圖,mmap("a")
有一個值?
它看起來像你改變了默認值而不是創建一個映射條目。我也猜測,這不會像你所期望的那樣工作,因爲'mmap(「x」)== mmap(「y」)'都返回相同的(默認值)實例 – Bergi
好吧,我還是不會真的理解。精心闡述? –
它表現爲(mmap(「a」))。+ =(「b」)',而不是'mmap.assign(「a」,mmap(「a」)+「b」)' – Bergi