0

私は最近、「ClassCastException clojure.core$num cannot be cast to java.lang.Number clojure.lang.Numbers.gt」というエラーを受け取りました。

私が実装した「getNumber」という関数は、整数のみを取得します。

getLoop と呼ばれる my 関数がこのエラーを返します。

 (defn getLoop []
    (getNumber num)
    (loop [z num]
           (when (> z -1)
           (println z)
           (recur (- z 1)))))

一方では、このクエリは正しく機能します。

 (defn getLoop []
    (loop [z 3]
           (when (> z -1)
           (println z)
           (recur (- z 1)))))

「getLoop」関数でエラーを回避するにはどうすればよいですか?

前もって感謝します!

4

2 に答える 2

0

(getNumber num)シンボル num は、関数本体の戻り値にバインドされていません。より慣用的な Clojure での関数は次のとおりです。

(defn getLoop [num]
  (loop [n num]
    (when-not (zero? n)
      (println n)
      (recur (dec n)))))

あなたgetNumberが言ったようにあなたが数字を返すなら、それは次のように呼び出せるはずです:

(-> num getNumber getLoop)
于 2013-11-11T14:17:23.430 に答える