闭包:ClassCastException java.lang.Boolean不能强制转换为clojure.lang.IFn
我正在定义一个函数“true或false”,该函数将接受一个参数,如果该参数为true,则打印“1”,如果为false,则打印“0”,但当我使用该参数运行函数时:闭包:ClassCastException java.lang.Boolean不能强制转换为clojure.lang.IFn,clojure,Clojure,我正在定义一个函数“true或false”,该函数将接受一个参数,如果该参数为true,则打印“1”,如果为false,则打印“0”,但当我使用该参数运行函数时: (= 5 4) 它返回错误:“ClassCastException java.lang.Boolean无法转换为clojure.lang.IFn” 代码: clojure.lang.IFn接口提供对调用函数的访问,但是传递给true或false的似乎是一个数字。您不应该将x括在if中的括号中–这意味着您正在调用x函数调用(请参见if
(= 5 4)
它返回错误:“ClassCastException java.lang.Boolean无法转换为clojure.lang.IFn”
代码:
clojure.lang.IFn
接口提供对调用函数的访问,但是传递给true或false
的似乎是一个数字。您不应该将x
括在if
中的括号中–这意味着您正在调用x
函数调用(请参见if
特殊表单)。通过clojure.lang.IFn
接口可以访问调用函数,但是您传递给的是真还是假
似乎是一个数字。您不应该将x
括在if
内的括号中–这意味着您正在调用x
函数调用(请参见if
特殊表单中的)
(defn true-or-false [x] (if (x)
(println "1")
(println "0")))
(def a (= 5 4))
(true-or-false a)