clojure - 如何在 Clojure 中检查一个映射是否是另一个映射的子集?

标签 clojure

我想编写一个函数来检查一个 map 是否是另一个 map 的子集。

使用示例应该是:

(map-subset? {:a 1 :b 2} {:a 1 :b 2 :c 3})
=> true

有没有一种本地方法可以做到这一点?

最佳答案

通过将映射转换为集合,您可以使用clojure.set/subset?

(clojure.set/subset? (set {:a 1 :b 2}) (set {:a 1 :b 2 :c 3}))
=> true

这将使每对 map 成为集合中的元素

 (set {:a 1 :b 2 :c 3})
 => #{[:b 2] [:c 3] [:a 1]}

因此,{:a 1 :b 3} 不会是子集

(clojure.set/subset? (set {:a 1 :b 3}) (set {:a 1 :b 2 :c 3}))
=> false

关于clojure - 如何在 Clojure 中检查一个映射是否是另一个映射的子集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20421405/

相关文章:

java - 在 clojure 中同时支持 xml 和 json REST 响应

clojure - 为什么我的 lein re-frame 模板中有 clj 和 cljs 文件夹?

java - 从 Clojure 调用可变参数 Java 函数时出现问题

clojure - Clojars 的补丁库

clojure - defrecord 未找到类异常

clojure - 如何制作不带参数并返回常量值的文字函数?

testing - 如何测试使用 gensyms 的 clojure 宏?

clojure - leiningen uberjar 未添加 list 属性

clojure - 在线程 "main"clojure.lang.ArityException 中避免异常的方法?

clojure - 在clojure中编写一个多路复用服务器?