私はClojureがエラーメッセージで教えていることをほとんど理解しています。しかし、エラーがどこで発生したのかを知るのはまだ無知です。ここでClojureでどこでエラーが発生したのかを確認してください
は私が
(defn extract [m]
(keys m))
(defn multiple [xs]
(map #(* 2 %) xs))
(defn process [xs]
(-> xs
(multiple) ; seq -> seq
(extract))) ; map -> seq ... fails
(process [1 2 3])
静的型付け言語は、今私は線X上のマップを期待し、Clojureのがこれを行う関数にシーケンスを渡そうとしましたことを私に言うだろう何を意味するかの例です。方法:
ClassCastException java.lang.Long cannot be cast to java.util.Map$Entry
しかし、私はまだどこでエラーが起こったのか分かりません。明らかにこのインスタンスのためには、3つの関数しか関与していないので簡単です。それらのすべてを簡単に読むことができますが、プログラムが大きくなるにつれて、非常に早く古いものになります。
上から下にコードを読み取る以外のエラーがどこで発生したかを知る方法はありますか?あなたはスタックトレースを印刷することができREPLセッションを持っている場合は
@ChrisMurphy申し訳ありませんが、間違いでした。それを交換するのを忘れました。私は 'multiple'を意味しました。 – TomTom
ここに期待される出力は?ベクトルを渡しているマップにキーを使用する必要があります。 - >(keys [2 4 6])のように動作しません。ここでキーの機能を確認してください:https://clojuredocs.org/clojure.core/keys。 また、ハッシュマップも生成されません。マップ:https://clojuredocs.org/clojure.core/map –
これは間違いの実証であり、そうです。私はエラーが起こった理由についても説明しました。私の予想される出力は、どこでエラーが発生したかを教えてくれるものです。 – TomTom