动态变量在里面丢失了

时间:2017-07-03 09:26:41

标签: clojure

每当我将for宏与动态变量和binding混淆时,我就会发现这种奇怪的行为。为了说明这一点,我提出了这个最小的例子,我可以在我在系统中调用的任何lein repl中运行:

(def ^:dynamic foo 1)

(binding [foo 2]
  (println foo)) ; => 2

(binding [foo 2]
  (for [x (range 1)]
    (println foo))) ; => 1

如您所见,当在for范围内时,动态变量foo的值将丢失并获得原始值。我应该将此报告为错误吗?或者是否有行为的解释?

0 个答案:

没有答案
相关问题