Clojure 如何使用函数更新地图值?

Clojure 如何使用函数更新地图值?,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

我有一个map
m
,一个key
k
和一个function
f
。是否可以更简单地重写此代码

(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}