gpt4 book ai didi

map - Clojure 应用映射和关键字参数破坏

转载 作者:行者123 更新时间:2023-12-03 23:20:55 25 4
gpt4 key购买 nike

考虑一个具有以下签名的函数:

(defn make-widget [& {:keys [x y] :or {x 10 y 20}}]
...)

将映射传递给函数的最佳方法是什么,例如:
(make-widget {:x 100})

或者
(make-widget {:y 200 :x 0})

我目前想到的是通过 vec , flattenapply例如。:
(apply make-widget (flatten (vec ({:x 100}))

我坚信有更好的方法来做到这一点。你能考虑一个吗?

最佳答案

我也想不出更优雅的方式,尽管在我看来应该有一个(例如 apply 的特定于 map 的变体)。

使用 flatten但是,除了不是很优雅之外,还有其他问题。如果 map 的值是集合,flatten也将对这些进行递归处理,因此事情可能会完全混淆。这个替代方案避免了这个问题:

(apply make-widget (apply concat {:x 100}))

关于map - Clojure 应用映射和关键字参数破坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19375112/

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