У меня есть ряд предметов в наборе, подобных этому:
(def my-set
#{
{:id "ab" :a 1 :b 2}
{:id "abc" :a 1 :b 2}
{:id "abcd" :a 1 :b 2}
}
)
: и я хочу обновить один из предметов примерно так:
(update-in-set my-set :id "abc" {:id "abc" :a 6 :b 20})
.что вернет:
#{
{:id "ab" :a 1 :b 2}
{:id "abc" :a 6 :b 20}
{:id "abcd" :a 1 :b 2}
}
: есть ли встроенная функция Clojure или другой простой способ сделать это?
Обновление
В конце концов я сделал это:
(defn update-in-set [my-set key value new-record]
(merge (clojure.set/select #(not= (get % key) value) my-set ) new-record)
)