【发布时间】:2015-02-07 04:57:15
【问题描述】:
我正在尝试从地图中查找匹配的键值对。我正在使用以下代码:
(defn matches? [m k v]
(let [val (k m)]
(= val v)))
my-demo.core=> (matches? {:a 1 :b 2} :b 2)
true
my-demo.core=> (matches? {:a 1 :b 2} :b 3)
false
使用superset?的另一种方法:
my-demo.core=> (superset? #{:a 1 :b 3} #{:a 1})
true
my-demo.core=> (superset? #{:a 1 :b 3} #{:a 2})
false
我觉得有更好的方法来做到这一点。
我的问题是:有没有一种惯用的方法可以在 Clojure 的 map 中找到匹配的键和值?
【问题讨论】:
-
您的
matches?函数对我来说看起来不错,但在这种情况下我可能会删除 let:(defn matches? [m k v] (= (k m) v))。 -
请将其展开为答案
标签: dictionary clojure