Clojure 如何使用函数更新地图值?
我有一个mapClojure 如何使用函数更新地图值?,clojure,Clojure,我有一个mapm,一个keyk和一个functionf。是否可以更简单地重写此代码 (assoc m k (f (get m k)) 试一试 编辑:引入Clojure 1.7 更新在这方面做得很好,尽管它对嵌套贴图特别有用: > (update-in {:a 4} [:a] + 7) {:a 11} > (update-in {:a {:b 4 :c {:d 8}} :q :foo} [:a :c :d] + 7) {:a {:c {:d 15}, :b 4}, :q :foo
m
,一个keyk
和一个functionf
。是否可以更简单地重写此代码
(assoc m k (f (get m k))
试一试
编辑:引入Clojure 1.7
更新在这方面做得很好,尽管它对嵌套贴图特别有用:
> (update-in {:a 4} [:a] + 7)
{:a 11}
> (update-in {:a {:b 4 :c {:d 8}} :q :foo} [:a :c :d] + 7)
{:a {:c {:d 15}, :b 4}, :q :foo}
(update m k f)
> (update-in {:a 4} [:a] + 7)
{:a 11}
> (update-in {:a {:b 4 :c {:d 8}} :q :foo} [:a :c :d] + 7)
{:a {:c {:d 15}, :b 4}, :q :foo}