我有一个java.util.HashMap对象m(调用Java代码的返回值),我想获得一个带有附加键值对的新映射.
如果m是Clojure地图,我可以使用:
(assoc m "key" "value")
Run Code Online (Sandbox Code Playgroud)
但试着这样做HashMap:
java.lang.ClassCastException:java.util.HashMap无法强制转换为clojure.lang.Associative
没有运气seq:
(assoc (seq m) "key" "value")
Run Code Online (Sandbox Code Playgroud)
java.lang.ClassCastException:clojure.lang.IteratorSeq无法强制转换为clojure.lang.Associative
我设法做到的唯一方法是使用HashMap自己的put,但返回void所以我必须明确返回m:
(do (. m put "key" "value") m)
Run Code Online (Sandbox Code Playgroud)
这不是惯用的Clojure代码,m而是我正在修改而不是创建新的地图.
如何HashMap使用更多Clojure-ish方式?
interop clojure hashmap purely-functional clojure-java-interop