7
¿Cuál es la mejor manera de obtener el primer valor no nulo de varias claves posibles en un mapa?¿Forma idiomática de obtener uno de los valores posibles en un mapa?
Ejemplo:
(get-first-matching {:fum 4 :bar 41 :baz 45} [:foo :bar :baz])
;=> 41
Exactamente lo que estoy buscando! :) – Annan
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. –
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