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を操作するには?