gpt4 book ai didi

clojure - 在 Clojure 中代理命名参数的惯用方法

转载 作者:行者123 更新时间:2023-12-02 10:51:45 25 4
gpt4 key购买 nike

我需要一个薄薄地包裹 amazonica 的函数的 sqs/receive-message 以添加默认等待时间。该函数需要一个队列 URL,然后接受任意数量的可选命名参数,这些参数应原封不动地传递到 sqs/receive-message 。我想这样调用它:

(my-receive-message "https://sqs.us-east-1.amazonaws.com/123/test-q"
:max-number-of-messages 10
:delete true)

这应该会导致对 sqs/receive-message 的调用,如下所示:

(sqs/receive-message :queue-url "https://sqs.us-east-1.amazonaws.com/123/test-q"
:wait-time-seconds 20
:max-number-of-messages 10
:delete true)

这是我经常想做的事情,但我还没有找到一个好的方法。有没有惯用的方法来做到这一点?

最佳答案

对合并的参数使用apply

(defn my-receive-message
[url & {:as args}]
(apply sqs/receive-message (-> {:queue-url url
:wait-time-seconds 20}
(merge args)
seq
flatten)))

关于clojure - 在 Clojure 中代理命名参数的惯用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22227891/

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