假设我有一张地图:
{:name "foo"
:age "bar"}
Run Code Online (Sandbox Code Playgroud)
而另一个
{:name (fn [val] (println val))
:age (fn [val] (= val "bar"))}
Run Code Online (Sandbox Code Playgroud)
我想将:name第二个地图上键入的功能应用到第一个地图,第一个地图也被键入,:name并且功能键入:age到第一个键入的地图:age.怎么做clojure方式?
您可以使用merge-with
(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}
Run Code Online (Sandbox Code Playgroud)