13
如果您有一張地圖或一組地圖,並且您希望能夠使用一個功能更新多個鍵的值,那麼執行此操作最常用的方法是什麼?更新多個鍵的值
=> (def m [{:a 2 :b 3} {:a 2 :b 5}])
#'user/m
=> (map #(update-in % [:a] inc) m)
({:a 3, :b 3} {:a 3, :b 5})
不是映射更新,在每個關鍵,我最想要的,經營一些像這樣的功能:
=> (map #(update-vals % [:a :b] inc) m)
({:a 3, :b 4} {:a 3, :b 6})
任何建議,將不勝感激!我試圖減少不必要的長腳本中的行數。
非常好,快速回復太感謝了! – Giles 2012-03-09 20:11:20
我想知道是否有辦法保持update-in的行爲,以便丟失的鍵不會拋出空指針異常。 '(update-in {} [:test](fnil inc 0)) {:test 1}' – Istvan 2014-05-01 18:47:27
這是一個很好的答案,並強調了一些學習clojure的美麗(也包括一些大腦包裝困難non-lisper) – zach 2014-05-28 19:49:57