有时,根据数据的语义合并很重要。不幸的是,current 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从未提供键给合并函数,所以我们无法这样做