2012-01-09 7 views

risposta

11

some.

user=> (some {:fum 4 :bar 41 :baz 45} [:foo :bar :baz]) 
41 
+0

Esattamente quello che sto cercando! :) – Annan

+8

È 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. –

+7

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

Problemi correlati