2012-01-09 5 views

Respuesta

11

some.

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

Exactamente lo que estoy buscando! :) – Annan

+8

Es interesante observar que el mapa se está utilizando aquí como función de predicado que se llama con la colección de claves. Por lo tanto, lo que obtendrá no es estrictamente el primer valor no nulo sino el primer valor "verdad". Pruebe '(algunos {: foo nil: bar false: baz 20} [: foo: bar: baz])' por ejemplo. –

+7

Correcto, entonces una versión que funciona para valores nulos o falsos parece '(when-let [[k v] (some # (find m%) [: foo: bar: baz])] v)'. – amalloy

Cuestiones relacionadas