gpt4 book ai didi

clojure - 为什么我无法动态绑定(bind)非动态变量?

转载 作者:行者123 更新时间:2023-12-04 01:47:34 25 4
gpt4 key购买 nike

我正在尝试使用 clojure.tools.trace 命名空间的 dotrace 函数。

(dotrace [my-function] (my-function 5))

但我得到了这个错误:

IllegalStateException Can't dynamically bind non-dynamic var: my-ns/my-function clojure.lang.Var.pushThreadBindings (Var.java:339)



这是什么意思?为什么我得到它?

(我正在使用 Clojure 1.3)

最佳答案

我认为您需要将您的函数声明为动态绑定(bind),例如

(def ^:dynamic my-function
(fn [x] .....))

这样做的原因是,如果您不明确要求动态 var,Clojure(1.3 以上)将使其成为非动态的性能优化。

关于clojure - 为什么我无法动态绑定(bind)非动态变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8875353/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com