Clojure: praca z java.util.HashMap w sposób idiomatyczny Clojure
mamjava.util.HashMap
obiektm
(wartość zwracana z wywołania kodu Java) i chciałbym uzyskać nową mapę z dodatkową parą klucz-wartość.
Jeślim
Mogłem użyć mapy Clojure:
(assoc m "key" "value")
Ale próbuję tego naHashMap
daje:
java.lang.ClassCastException: java.util.HashMap nie może być rzutowany na clojure.lang.Associative
Nie mam szczęściaseq
zarówno:
(assoc (seq m) "key" "value")
java.lang.ClassCastException: clojure.lang.IteratorSeq nie może być rzutowany na clojure.lang.Associative
Jedynym sposobem, w jaki udało mi się to zrobić, było użycieHashMap
własnyput
, ale to wracavoid
więc muszę wyraźnie wrócićm
:
(do (. m put "key" "value") m)
To nie jest idiomatyczny kod Clojure, plus modyfikujęm
zamiast tworzyć nową mapę.
Jak pracować zHashMap
w sposób bardziej Clojure?