2011-02-23 65 views
15

我確定它在我面前,但我很想念它。檢查以下內容:更新和替換地圖值

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

我想要做的就是這樣的事情(用假函數調用altermap):

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

有什麼建議的方法?是否有一個內置的功能來做#2?

回答

23

update-in與您的altermap函數幾乎完全相同,只不過它需要一個向量而不是單個關鍵字。所以:

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

據我所知有一種update-in沒有單鍵變種,但不必把周圍的花括號不應該是太麻煩了。

+0

我同意。我在寫這篇文章後不久發現了更新。並且update-in具有很好的修改樹的能力,這對我的項目非常有用。 – 2011-02-23 19:06:13

+8

請注意,上面的更新內容旨在用比以上更少的參數來設計寫入:'(update-in entity [:position] add(:velocity entity)) ' – 2011-02-23 21:28:16