2017-07-25 111 views
1

我有elisp的代码是这样的:elisp的变量绑定到自身

(setq a nil) 
(defun testa (a) (add-to-list a "ABCD")) 
(testa 'a) 

我想是让a列表("ABCD")但由于功能testa的参数名称相同的变量a,在本地绑定a中的函数本身,它不绑定函数外的值。

我的问题是:如果我不在外面重命名变量或者是否有任何整洁的解决方案,我是不是可以解决elisp的功能?

回答

1

这是elisp中的预期行为。有关使用elisp进行变量范围设定的更多信息,请参阅the manual进行详细说明。 This post在解释范围界定方面也做得很好。

无法将引用传递给变量。但是可以传递返回或修改全局(或动态)作用域变量的函数。也可以有一个修改已知变量的函数。

编辑:添加更多细节。

+1

这并没有回答这个问题 - 它没有解释OP所想知道的行为。请包含您链接到的解释的一些相关部分。否则,这实质上是一个仅链接的答案,风险被删除。 – Drew

+1

谢谢。也许我需要使用工作的词法绑定来定义函数。 – hw9527