将列表传递给& rest args

时间:2013-06-12 21:46:38

标签: emacs elisp

如何将参数列表传递给start-process的第4个argrument(PROGRAMS-ARGS):

(开始进程名称BUFFER PROGRAM& rest PROGRAM-ARGS)

例如:

(start-process“program-name”nil“program-name”“ - p1”“ - p2”“ - p3”“program-name”)

我想通过收集列表中的参数并将list变量传递给functions参数来做同样的事情,但它不起作用:

(setq program-args(list“-p1”“ - p2”“ - p3”))

(start-process“program-name”nil“program-name”program-args“program-name”)

为我可怜的英语而烦恼:(

1 个答案:

答案 0 :(得分:4)

在这种情况下你应该使用apply

  

使用参数应用调用函数,就像funcall但有一个   区别:最后一个参数是一个对象列表,它们是   传递给函数作为单独的参数,而不是单个列表。

即,在您的情况下,正确的代码是:

(apply 'start-process
  (append (list "program-name" nil "program-name")
          program-args
          (list "program-name")))