Clojure中的函数是否按照标题中描述的那样工作:
考虑这个载体:
(def v [{:a 0 :b 1} {:a 0 :b 3} {:a 0 :b 2}])
我正试图抓住第一个条目,其中:b等于3。
用法如下:(这是JS下划线查找工作的方式)
(myfind #(= (:b %) 3) v)
答案 0 :(得分:3)
天真的解决方案:
(first (filter #(= (:b %) 3) v))
惯用解决方案:
(some #(when (= (:b %) 3) %) v)
作为一项功能:
(defn myfind [pred coll]
(some #(when (pred %) %) coll))
(myfind #(= (:b %) 3) v) => {:b 3, :a 0}
答案 1 :(得分:1)
安东:
如果您想要返回匹配的整个地图或某个键的值,则没有具体说明。否则:
(filter #(= (:b %) 3) [{:a 0 :b 1} {:a 0 :b 3} {:a 0 :b 2}])
=> ({:a 0, :b 3})