Elisp 变量绑定到自身

Elisp variable bind to itself

我有这样的 elisp 代码:

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

我想要的是使 a 列表 ("ABCD") 但由于函数 testa 的参数名称与变量 a 相同,因此局部绑定a在函数中就是它自己,不绑定函数外的值。

我的问题是:如果我不在外部重命名变量,我是否无法解决 elisp 的特性,或者是否有任何巧妙的解决方案?

这是 elisp 中的预期行为。有关使用 elisp 的变量作用域的更多信息,the manual has a thorough explanation. This post 也很好地解释了作用域。

无法传递对变量的引用。但是,可以传递 returns 或修改全局(或动态)范围变量的函数。也可以有一个修改已知变量的函数。

编辑:添加了更多细节。