clojure - 根据键将映射中的函数应用于映射中的每个值

标签 clojure

假设我有一张 map :

{:name "foo"
 :age "bar"}

还有一个

{:name (fn [val] (println val))
 :age (fn [val] (= val "bar"))}

我想将第二个 map 上由 :name 键控的函数应用到第一个 map ,该函数也由 :name 键控以及由 :age 键控的函数 到第一个由 :age 键控的 map 。如何用 Clojure 方式做到这一点?

最佳答案

您可以使用合并与

(def m1 {:name "foo"
         :age "bar"})

(def m2 {:name (fn [val] (println val))
         :age (fn [val] (= val "bar"))})

user=> (merge-with #(%1 %2) m2 m1)
foo
{:name nil, :age true}

关于clojure - 根据键将映射中的函数应用于映射中的每个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22359975/

相关文章:

clojure - 什么是 Clojure 内在函数

在 Clojure 向量图中对向量进行排序

binding - Clojure 绑定(bind)不起作用

clojure - 这个 "#"在这个 Clojure 上下文中是什么意思?

clojure - 等价于 every-pred,但对于任何给定的谓词

java - 如何使用Java解析Clojure语法并可视化

java - 斯卡拉-Java =? (或 Clojure - Java =?)

parsing - 如何测试不符合 Instaparse 语法(Clojure)的文本?

clojure - 有没有办法在不消耗它们的值的情况下窥视 Clojure 异步 channel ?