说我有一个函数foo:
(defun foo (x y &rest args)
...)
后来我想用功能栏包装它:
(defun bar (x &rest args)
(foo x 100 args))
假设bar然后被调用如下: (bar 50 1 2 3)
使用这个设置,args是一个包含尾随参数的bar体内的列表,因此当我将它传递给foo时,而不是得到相当于(foo 50 100 1 2 3)我的(foo 50 100 '(1 2 3)).如果这些是宏,我会在条形体内使用``(foo,x 100,@ args)`将args拼接到函数调用中.但是,@只能在反引号列表中使用.
如何在常规函数中进行相同类型的拼接?
Xac*_*ach 33
APPLY将使用其后续参数调用其第一个参数,并且最后一个参数必须是列表.所以:
(apply #'foo x 100 args)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3458 次 |
| 最近记录: |