に存在し、私は次のようなデータ構造(地図の二つのベクトルが、私は信じている)同じキーが別のベクトル
{ :put [{:listId "myList", :entryId "1", :dateTime 1434637074},
{:listId "myList", :entryId "2", :dateTime 1434637075}],
:delete [{:listId "myList", :entryId "1"}]}
を持っているとするためのキーlistId
とentryId
任意の:put
エントリを削除したいときのベクトルから地図を削除しますすでに:delete
の中に存在します。したがって、結果は次のようになります。
{ :put [{:listId "myList", :entryId "2", :dateTime 1434637075}],
:delete [{:listId "myList", :entryId "1"}]}
私は次のことを試してみましたが、1)それは慣用Clojureのではないですし、2)それが重複したエントリを削除しません。
(defn remove-add-if-duplicate [requests]
(doseq [delete (seq (:delete requests))]
(doseq [put (seq (:put requests))
:when (and (= (:listId delete) (:listId put))
(= (:entryId delete) (:entryId put))]
(disj (set (:put requests)) put)))
requests))
(remove-add-if-duplicate
{ :put [{:listId "myList", :entryId "1", :dateTime 1434637074},
{:listId "myList", :entryId "2", :dateTime 1434637075}],
:delete [{:listId "myList", :entryId "1"}]})
私のコードを修正したり、これを行ううまくいく方法を教えてもらえますか?