有时根据数据的语义进行合并是很重要的。不幸的是,当前的 merge-with 实现让你根据数据类型(值)猜测需要做什么。然而,语义需要我们知道我们试图合并的键是什么
例如,在一个应用中,一个键 :messages
是一个数组,需要合并时进行连接,而 :tags
键需要替换为新值
(merge-with into
{:messages [1 2 3] :tags [1 1 1]}
{:messages [4] :tags [4 4 4]})
=> {:messages [1 2 3 4] :tags [1 1 1 4 4 4]} ;; got
=> {:messages [1 2 3 4] :tags [4 4 4]} ;; expected
由于当前的 merge-with 函数从未向合并函数提供键,所以无法实现这一点