📜  clojure 合并映射 (1)

📅  最后修改于: 2023-12-03 14:40:06.533000             🧑  作者: Mango

Clojure 合并映射

在Clojure中,合并映射可以通过 merge 函数来实现。这个函数接收两个或多个映射作为参数,并将它们合并成一个新的映射。如果有重复的键,则后面的映射中的值将覆盖先前的值。下面是一个示例:

(def map1 {:a 1 :b 2})
(def map2 {:b 3 :c 4})
(def map3 {:d 5})

(merge map1 map2) ;=> {:a 1 :b 3 :c 4}
(merge map1 map3) ;=> {:a 1 :b 2 :d 5}
(merge map1 map2 map3) ;=> {:a 1 :b 3 :c 4 :d 5}

除了 merge 函数之外,还有 merge-with 函数。这个函数与 merge 函数的行为类似,但是它允许你指定一个函数来处理重复的键。这个函数接收两个值作为参数,并返回一个新的值,它将在新的映射中替代旧的值。例如:

(merge-with + {:x 1 :y 2} {:x 10 :y 20}) ;=> {:x 11 :y 22}

在这个例子中,键 :x:y 的旧值分别是 12,新的值分别是 1020。我们通过 + 函数将它们相加得到了新的值 1122

总之,合并映射是Clojure中一项十分有用的特性,它可以让你将多个映射合并成一个,并根据需要处理重复的键。