Clojure: trabajar con java.util.HashMap de una manera idiomática de Clojure
tengo unjava.util.HashMap
objetom
(un valor de retorno de una llamada a un código Java) y me gustaría obtener un nuevo mapa con un par clave-valor adicional.
Sim
Si fuera un mapa de Clojure, podría usar:
(assoc m "key" "value")
Pero probando eso en unaHashMap
da:
java.lang.ClassCastException: java.util.HashMap no se puede convertir a clojure.lang.Associative
Sin suerte conseq
ya sea:
(assoc (seq m) "key" "value")
java.lang.ClassCastException: clojure.lang.IteratorSeq no se puede convertir a clojure.lang.Associative
La única forma en que logré hacerlo fue usarHashMap
propiaput
, pero eso vuelvevoid
así que tengo que volver explícitamentem
:
(do (. m put "key" "value") m)
Esto no es un código idiomático de Clojure, además estoy modificandom
En lugar de crear un nuevo mapa.
Cómo trabajar con unHashMap
De una manera más Clojure-ish?