elisp 程序
(defun test (ee) (symbol-value ee))
(setq e 1.1)
(test 'e)
它的结果是 1.1
然后将test中的'ee'改成'e',
(defun test (e) (symbol-value e))
(setq e 1.1)
(test 'e)
它的结果是 电子
为什么会有不同的结果?
最佳答案
形式参数e
绑定(bind)到符号e
,作为参数传递。在词法绑定(bind)关闭的情况下,当(symbol-value e)
被求值时,形式参数e
的值是符号e
,即回来。 IOW,作为参数传递的符号与函数绑定(bind)的变量之间存在混淆(变量捕获)。
如果您使用不同的符号,例如ee
,作为参数,则没有变量捕获。
这是动态绑定(bind)为何令人困惑的主要示例。
关于emacs - elisp 中的变量绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20695258/