为什么词法绑定在emacs的这个示例中不起作用?

为什么词法绑定在emacs的这个示例中不起作用?,emacs,elisp,Emacs,Elisp,我从emacs wiki复制粘贴了此示例: wiki说打印的东西应该是1,但对我来说它打印2,这表明词汇绑定不起作用。有人知道为什么会这样吗 我在EMACSV26上。德比安 这是我的缓冲区中的内容。我正在使用M-x eval buffer对其进行评估 ;;-*-词汇结合:t-*- 让((a 1));约束(1) (让((f(lambda()(print a))) (让((a 2));约束(2) (全部f))) 非常感谢您的帮助。您将词法绑定设置为文件变量。这在文件打开时设置,因此,如果您只是将文

我从emacs wiki复制粘贴了此示例:

wiki说打印的东西应该是1,但对我来说它打印2,这表明词汇绑定不起作用。有人知道为什么会这样吗

我在EMACSV26上。德比安

这是我的缓冲区中的内容。我正在使用
M-x eval buffer
对其进行评估

;;-*-词汇结合:t-*-
让((a 1));约束(1)
(让((f(lambda()(print a)))
(让((a 2));约束(2)
(全部f)))

非常感谢您的帮助。

您将
词法绑定设置为文件变量。这在文件打开时设置,因此,如果您只是将文本添加到文件中,而不关闭并重新打开它,
lexical binding
的值仍然为零(do
C-h v lexical binding RET
,请自行查看)。因此,您使用的是动态绑定,值为2


如果关闭并重新打开文件,将设置文件变量(请检查!),当您计算表单时,将得到1。

必须关闭文件并重新打开才能设置文件变量。没有这个选项,
词法绑定默认设置为nil。就是这样!非常感谢。