gpt4 book ai didi

clojure - 在 Clojure 中从命令行设置调试功能

转载 作者:行者123 更新时间:2023-12-04 16:06:13 27 4
gpt4 key购买 nike

我有一个这样的命名空间:

(ns foo.core)

(def ^:dynamic *debug-fn*
"A function taking arguments [bar baz]"
nil)

(defn bar-info
[bar _]
(println bar))

(defn baz-info
[_ baz]
(println baz))

(defn do-stuff
[bar baz]
(when *debug-fn* (*debug-fn* bar baz)))

(defn -main
[& {:keys [debug-fn]}]
(binding [*debug-fn* (symbol debug-fn)] ;; THIS WON'T WORK!
(do-stuff 27 42)))

我想做的是允许从命令行指定调试功能,如下所示:lein run bar-infolein run baz-info

我不确定如何将指定的字符串作为命令行参数并将其转换为命名空间限定的函数以进行绑定(bind)。我需要宏来执行此操作吗?

最佳答案

使用ns-resolve ,您将需要指定定义函数的命名空间。

user=> (defn f [n] (* n n n))
#'user/f
user=> ((ns-resolve *ns* (symbol "f")) 10)
1000

关于clojure - 在 Clojure 中从命令行设置调试功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22094708/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com