更新并替换地图值

Tim*_*dge 15 clojure

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

(assoc :position entity
      (add (:position entity) (:velocity entity)))
Run Code Online (Sandbox Code Playgroud)

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

(altermap :position entity #((add % (:velocity entity)))
Run Code Online (Sandbox Code Playgroud)

建议的方法是什么?是否有内置函数做#2?

sep*_*p2k 23

update-in几乎完全像你的altermap函数,除了它需要一个键向量而不是一个键.所以:

(update-in entity [:position] #(add % (:velocity entity)))
Run Code Online (Sandbox Code Playgroud)

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

  • 请注意,上面的更新版本是由设计编写的 - 具有比上述更少的parens:`(update-in entity [:position] add(:velocity entity))` (8认同)