在2024年Clojure调查中分享您的想法!点击此处填写调查

欢迎!请参阅关于页面,了解更多关于该活动的信息。

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 将这些键设置为 []

已经搞清楚在处理时需要解耦加载和卸载,我感到困惑,因为我原本期望有追踪API来处理这些。谢谢!
...