2012-01-09 44 views

回答

11

some

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

正是我在找什么! :) – Annan 2012-01-09 15:17:31

+8

有趣的是,这里使用的映射是作为使用键集合调用的谓词函数。因此,你会得到的不是第一个非零值,而是第一个“真值”值。例如,尝试'(一些{:foo nil:bar false:baz 20} [:foo:bar:baz])'。 – 2012-01-09 19:33:37

+7

对,所以一个适用于nil或false值的版本看起来像'(when-let [[k v](some#(find m%)[:foo:bar:baz])] v)'。 – amalloy 2012-01-09 20:09:40

相关问题