7
Jaki jest najlepszy sposób uzyskania pierwszej niezerowej wartości kilku możliwych kluczy na mapie.Idiomatyczny sposób uzyskania jednej z możliwych wartości na mapie?
przykład:
(get-first-matching {:fum 4 :bar 41 :baz 45} [:foo :bar :baz])
;=> 41
Dokładnie tego szukam! :) – Annan
Warto zauważyć, że mapa jest tutaj używana jako funkcja predykcyjna, która jest wywoływana z kolekcją kluczy. Zatem to, co otrzymasz, nie jest ściśle pierwszą niezerową wartością, ale pierwszą wartością "prawdy". Spróbuj '(some {: foo zero: bar false: baz 20} [: foo: bar: baz])' na przykład. –
Dobrze, więc wersja, która działa dla wartości, które są zerowe lub fałszywe, wygląda jak '(when-let [[v v] (some # (find m%) [: foo: bar: baz])] v)'. – amalloy