我在Clojure函数签名中看到了这样的&
用法(http://clojure.github.io/core.async/#clojure.core.async/thread):
(thread & body)
而这个:
(doseq seq-exprs & body)
这是否意味着函数/宏可以接受列表作为变量我还发现
*
通常用于表示可以接受多个参数,例如:(do exprs*)
有人知道函数/宏签名中
&
和*
之间的区别吗?有什么文档可以解释这种语法吗? 最佳答案
在clojurebinding forms(let
、fn
、loop
及其后代)中,可以将绑定向量的其余部分绑定到带有尾随&
的序列例如,
(let [[a b & xs] (range 5)] xs) ;(2 3 4)
使用
*
和其他使用&
是记录参数列表结构的约定。