我正在定义一个函数" true-or-false"这将采取一个论点并打印" 1"如果是真的那么" 0"如果它是假的,但当我用参数运行我的函数时:
(= 5 4)
它返回错误:" ClassCastException java.lang.Boolean不能强制转换为clojure.lang.IFn"
代码:
(defn true-or-false [x] (if (x)
(println "1")
(println "0")))
(def a (= 5 4))
(true-or-false a)
答案 0 :(得分:2)
clojure.lang.IFn
接口提供对调用函数的访问,但是传递给true-or-false
的内容似乎是一个数字。您不应该将x
包裹在if
内的括号中 - 这意味着您正在调用x
函数调用(请参阅if
特殊表单上的clojure.org reference )。