如何在Emacs Lisp中将函数作为参数传递?

Cri*_*ian 2 emacs functional-programming elisp dot-emacs

我正在尝试将我创建的函数添加到钩子中,但显而易见的(对我的Schemer头脑)方式似乎不起作用.该功能在2个地方使用,我想保持我的代码DRY,所以没有匿名功能.虽然我可以将我的函数包装在lambda中,但必须有更好的方法.

不起作用:

(defun my-function ()
   ;; do my stuff)

(add-hook 'some-hook-list my-function)
Run Code Online (Sandbox Code Playgroud)

我收到错误消息:

符号的值作为变量是void:my-function

Cri*_*ian 6

我想到了.这很简单.只需引用该功能:

修正代码:( defun my-function();;做我的东西)

(add-hook 'some-hook-list 'my-function) ;;; There's a quote before my-function
Run Code Online (Sandbox Code Playgroud)

  • 要清楚'foo是(function foo)的简写(与elisp中的(quote foo)相同,但在CL之类的其他lisp-2中却没有). (2认同)