2024 Clojure状态调查中分享您的看法!

欢迎!请参阅关于页面以了解更多如何使用本网站的详细信息。

0
tools.namespace
编辑

我正在尝试确定是否可以在项目中使用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来做这个。谢谢!
...