gpt4 book ai didi

clojure - 在 Clojure 中应用/合并的奇怪事情

转载 作者:行者123 更新时间:2023-12-02 06:17:35 27 4
gpt4 key购买 nike

谁能给我解释一下这个事实:

user> ((partial merge-with +) {:a 1} {:a 2})
{:a 3}
user> (apply (partial merge-with +) ({:a 1} {:a 2}))
nil

为什么我会收到 nil在第二种情况下?
第二行有什么问题?

最佳答案

表达方式

({:a 1} {:a 2})

评估为 nil . Clojure 中的映射是接受一个键并返回相应值的函数。表达方式
(let [f {:a 1}]
(f {:a 2}))

相当于 ({:a 1} {:a 2})尝试查找 key {:a 2} map {:a 1}并且由于 map 中没有这样的键 nil被退回。

回到你原来的问题,你所要做的就是改变列表 ({:a 1} {:a 2})到向量 [{:a 1} {:a 2}]它会按预期工作。另请注意,您不需要 partial在这种特殊情况下, (apply merge-with + [{:a 1} {:a 3}])会工作得很好。

关于clojure - 在 Clojure 中应用/合并的奇怪事情,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23402853/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com