【发布时间】:2012-01-26 16:36:58
【问题描述】:
我正在尝试在 emacs lisp 中应用闭包。我在这里找到了一个帖子: How do I do closures in Emacs Lisp?
使用如下代码:
(defun foo (x) `(lambda () ,x)) (message (string (funcall (foo 66)))))
但是遵循 emacs documentation lambda 的格式应该像 '(lambda () x) ==> 使用这种格式,我得到一个错误:符号的值作为变量是无效的:x
当“,”在“()”和“x”之间添加时,一切正常。
为什么?
【问题讨论】:
-
Emacs Lisp 没有这样的闭包。另请阅读 FUNCALL 如何使用它的文档。
-
在 Emacs 24 中,只要为缓冲区/文件设置了
lexical-binding,您的代码就可以工作。
标签: emacs lisp eval quote backquote