2
(defonce instance
(atom
{:id nil
:canvas nil
:subscribers #{"test1" "test2"}))
(defn replace-canvas [canvas id]
(println "replaced" id "'s canvas"))
(defn update-subscribers
[k r old-state new-state]
(pprint "this function is being called")
(pprint "I can execute consecutive forms")
(map (partial replace-canvas (new-state :canvas))
(new-state :subscribers)))
(add-watch instance :update-subs update-subscribers)
當實例原子變化,手錶功能表面上被調用,因爲「這個函數是被稱爲」和「我可以執行連續的形式」是都是印刷的,但地圖功能似乎從未發生過。我不確定爲什麼會出現這種情況,而且在add-watch的文檔中找不到任何可以放在watch函數內部的限制。Clojure的觀看功能執行,而是「地圖」作爲功能部不執行
即使我更換更新,用戶在地圖的東西更直接的像
(map println (new-state :subscribers))
地圖doen't似乎有任何影響。
任何幫助,將不勝感激, 謝謝!