elisp的变量绑定到自身
问题描述:
我有elisp的代码是这样的:elisp的变量绑定到自身
(setq a nil)
(defun testa (a) (add-to-list a "ABCD"))
(testa 'a)
我想是让a
列表("ABCD")
但由于功能testa
的参数名称相同的变量a
,在本地绑定a
中的函数本身,它不绑定函数外的值。
我的问题是:如果我不在外面重命名变量或者是否有任何整洁的解决方案,我是不是可以解决elisp的功能?
答
这是elisp中的预期行为。有关使用elisp进行变量范围设定的更多信息,请参阅the manual进行详细说明。 This post在解释范围界定方面也做得很好。
无法将引用传递给变量。但是可以传递返回或修改全局(或动态)作用域变量的函数。也可以有一个修改已知变量的函数。
编辑:添加更多细节。
这并没有回答这个问题 - 它没有解释OP所想知道的行为。请包含您链接到的解释的一些相关部分。否则,这实质上是一个仅链接的答案,风险被删除。 – Drew
谢谢。也许我需要使用工作的词法绑定来定义函数。 – hw9527