私のプログラムにはかなりの数のレコードがあり、それらのフィールドの1つをキーとして使用してマップを作成することになります。例えば
(defrecord Foo. [id afield anotherfield])
次に、IDをキーとしてマップに追加します。これはすべて完全に実行可能ですが、少し面倒です。たとえば、Fooの新しいインスタンスをマップに追加するときは、最初にキーを抽出する必要があります。clojure.coreのどこかに、これを行うためのデータ構造がすでに存在するのだろうか?
基本的には、セットの構築時にキーマッピング関数(つまり:id)に値を与えて、Fooのセットを構築し、それを追加/検索/削除/したいときに使用したいと思います。 。 価値。
したがって、代わりに:
(assoc my-map (:id a-foo) a-foo))
私は言うことができます:
(conj my-set a-foo)
そしてもっと興味深いことに、マージとマージ-サポート付き。