Clojure: trabalhando com um java.util.HashMap em uma forma idiomática de Clojure
eu tenho umjava.util.HashMap
objetom
(um valor de retorno de uma chamada para o código Java) e gostaria de obter um novo mapa com um par adicional de valor-chave.
E sem
eram um mapa do Clojure, eu poderia usar:
(assoc m "key" "value")
Mas tentando isso em umHashMap
dá:
java.lang.ClassCastException: java.util.HashMap não pode ser convertido em clojure.lang.Associative
Sem sorte comseq
ou:
(assoc (seq m) "key" "value")
java.lang.ClassCastException: clojure.lang.IteratorSeq não pode ser convertido em clojure.lang.Associative
A única maneira que consegui fazer foi usarHashMap
é próprioput
, mas isso retornavoid
então eu tenho que retornar explicitamentem
:
(do (. m put "key" "value") m)
Isto não é idiomático código Clojure, mais eu estou modificandom
em vez de criar um novo mapa.
Como trabalhar com umHashMap
de uma maneira mais Clojure-ish?