【发布时间】:2014-03-13 08:02:57
【问题描述】:
如果我想定义一个接受未知数量参数的函数,我可以轻松地执行以下操作:
(defn foo
[& args]
args)
它返回一个clojure.lang.ArraySeq 类型的值,其中包含函数中给定的值。
在宏中,使用~@ 是取消引用拼接,这会使给定的参数变平:
(defmacro foo
[bar & baz]
`(println ~@baz))
如果我像这样使用宏:
(foo "foo" 1 2 3 4)
它将打印出1 2 3 4。但是,我想让 args 不平坦。做~baz(没有@)给了我一个例外。知道怎么做吗?
【问题讨论】: