У меня есть объект java.util.HashMap
m
(возвращаемое значение из вызова кода Java), и я хотел бы получить новую карту с дополнительной парой ключ-значение.
Если m
была картой Clojure, я мог бы использовать:
(assoc m "key" "value")
Но попытка на a HashMap
дает:
java.lang.ClassCastException: java.util.HashMap нельзя отнести к clojure.lang.Associative
Не повезло с seq
:
(assoc (seq m) "key" "value")
java.lang.ClassCastException: clojure.lang.IteratorSeq нельзя отнести к clojure.lang.Associative
Единственное, что мне удалось сделать, это использовать HashMap
собственный put
, но возвращает void
, поэтому я должен явно возвращать m
:
(do (. m put "key" "value") m)
Это не идиоматический код Clojure, а я изменяю m
вместо создания новой карты.
Как работать с HashMap
более чем через Clojure -ий способ?