大部分情况下,我都明白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