gpt4 book ai didi

clojure - 将默认值应用于 map

转载 作者:行者123 更新时间:2023-12-04 04:40:58 25 4
gpt4 key购买 nike

我正在寻找一种将一些默认值应用于 map 的方法。我知道以下作品:

(defn apply-defaults
[needing-defaults]
(merge {:key1 (fn1 10)
:key2 (fn2 76)}
needing-defaults))

上面的问题是 fn1 的值和 fn2即使 needing-defaults 也会被评估可能已经有了这些 key ——因此永远不需要它们。

我试过合并,但这似乎不起作用。我对此很陌生 - 有什么建议吗?

最佳答案

我通常使用合并功能应用默认值:

(merge-with #(or %1 %2) my-map default-map)

但在你的情况下,它应该是这样的:
(reduce (fn [m [k v]]
(if (contains? m k) m (assoc m k (v))))
needing-defaults
defaults)

哪里 defaults是函数映射:
{ :key1 #(fn1 10)
:key2 #(fn2 76)}
if是一种特殊形式,所以它更新评估其 false分支。

See my example for more info .

关于clojure - 将默认值应用于 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18921204/

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