大部分情況下,我都明白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個函數,您可以輕鬆地通讀所有這些函數,但隨着程序變得越來越大,這個過程變得非常快。
有沒有辦法找出發生錯誤的位置,而不僅僅是從上到下讀取代碼的證據? (這是我目前的做法)
@ChrisMurphy對不起,這是一個錯誤。忘記交換它。我的意思是「多個」。 – TomTom
這裏您的預期產量是多少?鍵應該用於你將矢量傳遞給那個地圖的地圖。像 - >(鍵[2 4 6])不起作用。請檢查這裏的鍵功能:https://clojuredocs.org/clojure.core/keys。 另外(map#(* 2%)xs)不生成哈希映射。也見地圖:https://clojuredocs.org/clojure.core/map –
這是一個錯誤的演示,我知道'keys '確實。我甚至解釋了錯誤發生的原因。我的預期輸出是告訴我發生錯誤的地方。 – TomTom