7
Qual è il modo migliore per ottenere il primo valore non nullo di più chiavi possibili in una mappa.Modo idiomatico per ottenere uno dei possibili valori in una mappa?
Esempio:
(get-first-matching {:fum 4 :bar 41 :baz 45} [:foo :bar :baz])
;=> 41
Esattamente quello che sto cercando! :) – Annan
È interessante notare che la mappa viene utilizzata qui come funzione di predicato che viene chiamata con la raccolta di chiavi. Pertanto, ciò che otterrete non è strettamente il primo valore non nullo, ma il primo valore "verità". Prova '(alcuni {: foo nil: bar false: baz 20} [: foo: bar: baz])' per esempio. –
Esatto, quindi una versione che funziona con valori nulli o falsi assomiglia a '(when-let [[k v] (alcuni # (trova m%) [: foo: bar: baz]) v)'. – amalloy