设置调试功能,我有这样一个命名空间:在命令行用Clojure
(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-info
或lein run baz-info
。
我不确定如何将指定的字符串作为命令行参数,并将其转换为要绑定的命名空间限定函数。我需要一个宏来做到这一点吗?
完美,谢谢! –