我正在尝试使用 clojure.tools.trace 命名空间的 dotrace 函数。
(dotrace [my-function] (my-function 5))
但我收到了这个错误:
IllegalStateException 无法动态绑定非动态 var:my-ns/my-function clojure.lang.Var.pushThreadBindings (Var.java:339)
这是什么意思?为什么我得到它?
(我使用的是 Clojure 1.3)
我认为你需要将你的函数声明为动态绑定,例如
(def ^:dynamic my-function
(fn [x] .....))
这样做的原因是,如果您没有明确要求动态变量,Clojure(1.3 以上)将使其成为非动态的,作为性能优化。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)