Se si dispone di una mappa o di una raccolta di mappe e si desidera poter aggiornare i valori di più tasti con una funzione, qual è il modo più idiomatico per farlo?Aggiornare i valori di più chiavi
=> (def m [{:a 2 :b 3} {:a 2 :b 5}])
#'user/m
=> (map #(update-in % [:a] inc) m)
({:a 3, :b 3} {:a 3, :b 5})
Invece di mappatura update-in per ogni tasto, mi piacerebbe idealmente come una funzione che opera in questo modo:
=> (map #(update-vals % [:a :b] inc) m)
({:a 3, :b 4} {:a 3, :b 6})
Qualche consiglio sarebbe molto apprezzato! Sto cercando di ridurre il numero di righe in uno script inutilmente lungo.
Molto bello, grazie per la risposta rapida anche! – Giles
Mi chiedo se c'è un modo per mantenere il comportamento di update-in in modo che una chiave mancante non generi un'eccezione di puntatore nullo. '(update-in {} [: test] (fnil inc 0)) {: test 1}' – Istvan
questa è una risposta molto piacevole e mette in risalto parte della bellezza dell'apprendimento del clojure (anche alcune delle difficoltà del cervello ad non-lisper) – zach