java.util.HashMap
オブジェクト(Java コードの呼び出しからの戻り値)がm
あり、キーと値のペアを追加して新しいマップを取得したいと考えています。
Clojure マップの場合m
は、次を使用できます。
(assoc m "key" "value")
しかし、それを試してみると、次のようになり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 っぽい方法で aを操作するには?