У меня есть эта карта Clojure: добавить элемент в вектор Iside карте
(def m {:a "aaa" :b {:c ["ss" "gg"]}})
Я хочу, чтобы обновить его до этого (добавить «уу» к вектору: с):
{:a "aaa" :b {:c ["ss" "gg" "uu"]}}
Это то, что я придумал, и я ненавижу:
(assoc-in m [:b :c] (conj (get-in m [:b :c]) "uu"))
Как должен я быть Делать это?
Это именно то, что я искал, спасибо! – siltalau
, но остерегайтесь ловушки: если ключ отсутствует на карте, 'conj' создаст список, а не вектор:' (update-in m [: b: d] conj "xxx") '=>' { : a "aaa",: b {: c ["ss" "gg"],: d ("xxx")}} '. Чтобы избежать этого, вы должны обрабатывать значения «nil», например: '(update-in m [: b: d] (fnil conj [])" xxx ")' => '{: a" aaa ",: b {: c ["ss" "gg"],: d ["xxx"]}} ' – leetwinski