说我有一个函数foo:(defun foo (x y &rest args)
...)
我以后想用功能栏包装它:(defun bar (x &rest args)
(foo x 100 args))
假设酒吧随后被这样称呼:(bar 50 1 2 3)
通过此设置,args是bar主体内的列表,其中包含尾随参数,因此当我将其传递给foo时,而不是获得(foo 50 100 1 2 3)
的等效项时,我当然会得到(foo 50 100 '(1 2 3))
。如果这些是宏,我会在bar主体内使用``(foo,x 100,@ args)`将args拼接到函数调用中。 ,@仅在反引号引起的列表中起作用。
我如何在常规函数中进行相同类型的拼接?
最佳答案
APPLY将调用其第一个参数及其后续参数,而最后一个参数必须是列表。所以:
(apply #'foo x 100 args)
关于common-lisp - 如何在Common Lisp中的宏之外拼接到列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2627262/