我想编写一个函数来检查一个 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/