2012-01-09 62 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