什么和休息在elisp中意味着什么?

hq.*_*ong 19 lisp emacs elisp

&rest意味着什么:(append &rest sequences)

我已经完成了"elisp_intro"一书,但我找不到答案.如果你能帮助我,我将非常感激.

kwa*_*ord 20

它表示以下参数是"rest"参数.在你的例子中,sequences是休息参数.

与普通参数不同,rest参数将使用用户提供的任何参数的"rest".它是一种创建接受可变数量参数的函数的方法.在函数体内,参数将是一个包含所有额外参数的列表.

因此,如果你有一个看起来像的函数(add &rest numbers),那么你就可以调用它(add 1 2 3 4 5),并且在函数中,numbers参数将具有值(1 2 3 4 5).

或者,例如, ((lambda (a &rest r) r) 1 2 3) ;=> (2 3)

  • 值得注意的是,`apply`函数与`&rest`特性结合使用很好,因为`apply`要求它的最终参数是参数列表.因此,如果您需要接受可变数量的参数以便将它们传递给另一个函数,这两个特性使得这样做很方便. (4认同)

Tyl*_*ler 10

函数定义中&rest符号后面的任何参数都将收集到单个列表对象中.所以在(追加和休息序列)的情况下,如果你调用函数:

(append 1) 
Run Code Online (Sandbox Code Playgroud)

变量序列将是函数体中的列表(1).如果你把它称为

(append 1 2 3)
Run Code Online (Sandbox Code Playgroud)

变量序列将是函数体中的列表(1 2 3).这在Elisp参考手册的参数列表节点中进行了解释.

(info "(elisp)Argument List")
Run Code Online (Sandbox Code Playgroud)