请在 Clojure 2024 年调查问卷!中分享您的想法。

欢迎!请查看关于页面以了解该功能的一些更多信息。

0

我正在尝试了解是否可以在项目中使用 tools.namespace.track,但我并不理解 :unload :load 的功能。

(require '[clojure.tools.namespace.track :as ns-track])

;; define a empty tracker and add some dependencies
(def tracker (-> (ns-track/tracker)
                 (ns-track/add '{alpha #{beta}
                                 beta  #{gamma delta}})))

;; now add a new dependency and check what we need to unload and load
(-> tracker
    (ns-track/add '{epsilon #{}})
    (select-keys [:clojure.tools.namespace.track/unload
                  :clojure.tools.namespace.track/load]))

#:clojure.tools.namespace.track{:unload (epsilon alpha beta),
                                :load (epsilon beta alpha)}

我不明白为什么需要 alpha 和 beta 才能卸载/加载,也许是我遗漏了什么。

我在使用最新版本。

谢谢!

1 个答案

0

最初,所有内容都需要卸载/加载。这是因为在刷新时,没有跟踪代码加载时间与文件修改时间的机制。所以,初始的加载/卸载就是全部内容。

随着重新加载对一切操作,它将根据操作从 :unload 中删除节点。

我不确定您期望从这个中得到什么行为。但我会猜测,最初您可能不希望任何内容出现在卸载/加载列表中。我会使用 assoc 将这些键设置为 []

by
已经弄清楚在处理时要解除卸载和安装,因为我原来期望有一个跟踪API,所以我感到困惑。谢谢!
...