我想观察 Clojure 哈希映射(通过 STM ref 访问)的不同部分的变化,它形成了一个很大的树,并且在对这些部分的变化时,我想调用一些注册的监听器。我怎么能在 clojure 中做到这一点,因为我知道“add-watch”只适用于整个引用?

最佳答案

我也会观察整棵树并检查子集。您可以使用相同的?对之前的状态进行测试。就像是

(defn change-tester [tree path]
  (let [orig (get-in tree path)]
    (fn [tree]
      (not (identical? (get-in tree path) orig)))))

我不经常使用观察者,所以我不知道语法,但你可以以某种方式附加上面的函数,我敢肯定。

关于clojure - 如何查看 clojure 树(哈希图)的子集的变化?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4579842/

10-15 06:33