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似乎有任何影响。
任何帮助,将不胜感激, 谢谢!