我正在尝试使用Clojure动态变量来控制详细程度:
(def ^:dynamic *verbose* true)
但是当我通过map
调用函数时,设置的绑定不会保留。这是预期的行为吗?如果是这样,为什么?如何保留绑定?
(defn doprint [x] (when *verbose* (println "verbose")))
(doprint)
> verbose
nil
(binding [*verbose* false] (doprint 1))
> nil
(binding [*verbose* false] (map doprint [1]))
> verbose
(nil)