2024 Clojure状态调查!中分享您的想法。

欢迎!请查看关于页面,以了解更多关于如何使用本站的信息。

0投票
错误

如果您为into提供的entries参数提供了序列类型而不是vector类型来创建hash-map,错误信息会有误导性。

user=> (into {} '((:a 0) (:b 1))) ClassCastException clojure.lang.Keyword cannot be cast to java.util.Map$Entry clojure.lang.ATransientMap_conj (ATransientMap.java:44)

如您所见,它报告了条目中的第一个元素类型,而不是实际的错误,即条目的类型本身,如果在条目中的键实际上是有效类型时,这可能会特别令人困惑。

`
user=> (into {} '([["a" 1] ["b" 2]] [["c" 3] ["d" 4]]))
ClassCastException clojure.lang.PersistentVector cannot be cast to java.util.Map$Entry clojure.lang.ATransientMap_conj (ATransientMap.java:44)

user=> (pst *e)
ClassCastException clojure.lang.PersistentVector cannot be cast to java.util.Map$Entry

clojure.lang.ATransientMap.conj (ATransientMap.java:44)
clojure.lang.ATransientMap.conj (ATransientMap.java:17)
clojure.core/conj! (core.clj:3358)
clojure.core/conj! (core.clj:3350)
clojure.lang.PersistentList.reduce (PersistentList.java:141)
clojure.core/reduce (core.clj:6747)
clojure.core/into (core.clj:6815)

`

1 个答案

0投票
参考:https://clojure.atlassian.net/browse/CLJ-1651 (由alex+import报告)
...