更新并替换地图值

时间:2011-02-23 17:43:24

标签: clojure

我确信它就在我面前,但我很想念它。检查以下内容:

(assoc :position entity
      (add (:position entity) (:velocity entity)))

我想做的是这样的事情(使用名为altermap的假函数):

(altermap :position entity #((add % (:velocity entity)))

建议的方法是什么?是否有内置功能来做#2?

1 个答案:

答案 0 :(得分:23)

update-in几乎与您的altermap函数完全相同,只是它需要一个键向量而不是一个键。所以:

(update-in entity [:position] #(add % (:velocity entity)))

据我所知,update-in没有单键变体,但是必须在键上放置括号不应该太麻烦。