設置調試功能,我有這樣一個命名空間:在命令行用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
。
我不確定如何將指定的字符串作爲命令行參數,並將其轉換爲要綁定的命名空間限定函數。我需要一個宏來做到這一點嗎?
完美,謝謝! –