gpt4 book ai didi

clojure - 在 Clojure 中,函数/宏签名中的 `&` 是什么意思?

转载 作者:太空宇宙 更新时间:2023-11-03 18:40:59 24 4
gpt4 key购买 nike

我看到 Clojure 函数签名中 & 的用法是这样的 (http://clojure.github.io/core.async/#clojure.core.async/thread):

(thread & body)

还有这个:

(doseq seq-exprs & body)

这是否意味着函数/宏可以接受列表作为变量?我还发现 * 通常用于表示可以接受多个参数,如下所示:

(do exprs*)

有没有人知道 &* 在函数/宏签名中的区别?是否有任何文档来解释此语法?

最佳答案

意思是&后面可以有多个参数,它们会被函数看成一个seq。示例:

(defn g [a & b]
(println a b))

那么如果你调用:

 (g 1 2 3 4)

它会打印出1 (2 3 4)(a是1,b是包含2、3、4的序列)。

关于clojure - 在 Clojure 中,函数/宏签名中的 `&` 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35412976/

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