【发布时间】:2011-02-16 17:41:53
【问题描述】:
我可爱的功能:
(defun f (x)
(lambda (y) (+ x y)))
那么,我希望是这样的:
(funcall (f 2) 2)
返回 4。但可惜的是,我得到了这个:
Debugger entered--Lisp error: (void-variable x)
那么如何从内部函数中获取变量呢?
【问题讨论】:
-
从 Emacs 24 开始,动态范围“错误”还有另一种解决方法:您可以将
;; -*- lexical-binding: t -*-放在文件顶部以启用词法范围。如果你这样做,上面的代码会按预期运行。
标签: elisp