gpt4 book ai didi

emacs - 为什么词法绑定(bind)在 emacs 的这个例子中不起作用?

转载 作者:行者123 更新时间:2023-12-04 02:35:15 24 4
gpt4 key购买 nike

我从 emacs wiki 复制粘贴了这个例子:https://www.emacswiki.org/emacs/DynamicBindingVsLexicalBinding#toc2

wiki 上说打印的东西应该是1,但是我打印的是2,说明词法绑定(bind)不起作用。有谁知道为什么会这样吗?

我在使用 Emacs v26。 Derby 安。

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

;; -*- lexical-binding: t;-*-

(let ((a 1)) ; binding (1)
(let ((f (lambda () (print a))))
(let ((a 2)) ; binding (2)
(funcall f))))

非常感谢您的帮助。

最佳答案

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

如果您关闭并重新打开文件,文件变量被设置(检查它!)并且当您评估表单时,您将得到 1。

关于emacs - 为什么词法绑定(bind)在 emacs 的这个例子中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62247532/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com