2016-10-28 5 views
0

私は、引数を取る関数「true-or-false」を定義しています。それは偽のですが、私は、引数で私の機能を実行すると場合:Closure:ClassCastException java.lang.Booleanをclojure.lang.IFnにキャストすることはできません

(= 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) 

答えて

2

clojure.lang.IFnインターフェイスは呼び出し関数へのアクセスを提供しますが、true-or-falseに渡すものは数値のようです。 xifのかっこで囲んではいけません。これは、x関数呼び出しを呼び出すことを意味します(のif特殊形式を参照してください)。

関連する問題