Elisp变量绑定到自身

时间:2017-07-25 12:38:37

标签: emacs elisp lexical-scope

我有这样的elisp代码:

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

我想要的是a列表("ABCD"),但由于函数testa的参数名称与变量a相同,因此{{1}的本地绑定函数中的1}}本身,它不绑定函数之外的值。

我的问题是:如果我不在外面重命名变量或者是否有任何简洁的解决方案,那么我无法解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

这是elisp中的预期行为。有关使用elisp进行变量作用域的更多信息,the manual有详尽的解释。 This post也很好地解释范围界定。

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

编辑:添加更多详细信息。