Clojure绑定:无法动态绑定非动态var

时间:2017-03-02 02:24:59

标签: clojure binding

我从Clojure开始并尝试绑定(或true)为(true)。我收到以下错误:

CompilerException:java.lang.ClassCastException:java.lang.Boolean不能强制转换为clojure.lang.IFn,编译:(myproject \ core.clj:8:26)

以下是代码:

(declare ^:dynamic or)
(binding [or true] (true))

如果我这样做

(binding [or true] (true))

我明白了:

CompilerException java.lang.IllegalStateException:无法动态绑定非动态var:clojure.core /或,编译:(myproject \ core.clj:5:30)

1 个答案:

答案 0 :(得分:2)

true不是一个功能。它不应该在括号中。

(declare ^:dynamic or) (binding [or true] true)

请注意,or已引用clojure.core/or。您可以改为命名var or-

相关问题