我知道有關類似的問題。他們不幫助我 - 如果沒有現有密鑰,代碼不起作用。不錯的方式來添加數字元素在斯卡拉地圖如果密鑰存在或插入新的元素它不是
我只需要一些很好的方法來將Map添加到現有的鍵(如果它存在)或將NEW鍵(如果map不包含適當的鍵)添加到現有的鍵。
下面的代碼工作,但我不喜歡它:
val a = collection.mutable.Map(("k1" -> 1), ("k2" -> 5))
val key = "k1"
val elem = a.get(key)
if (elem == None) {
a += ("k5" -> 200)
} else {
a.update(key, elem.get + 5)
}
任何一點更好的? 當前的Scala版本是2.10.4,我目前無法切換到2.11。 可變映射不是100%的限制,但是是首選。
這裏是,例如,similar question,但我也需要考慮不存在的鑰匙的情況。至少我們應該瞭解a.get(key)
可能是None
或者添加一些更好的方法。好主意是|+|
但我想保持基本的Scala 2.10.x.
可能現在它是最好的選擇。但是爲什麼Scala複雜的容器庫不能提供開箱即用的簡單東西 - 使用key和value可以增加值(如果不存在任何鍵)或者使用當前值和我的值都可以做些什麼?下次肯定會把這個至少包括到公司的圖書館(魔鬼)中。 – 2015-02-07 21:16:52
這是非常奇特的恕我直言:如果一個**其他**不存在,添加一個鍵不是一個真正的主流行爲 – 2015-02-07 21:21:47
爲什麼?例如,我想通過key來形成聚合地圖,我需要逐個添加元素,所以像'reduce()'這樣的東西不能被使用? – 2015-02-07 21:32:14