相关疑难解决方法(0)

Clojure:以惯用的Clojure方式使用java.util.HashMap

我有一个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

27
推荐指数
3
解决办法
1万
查看次数