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 或修改全局(或动态)范围变量的函数。也可以有一个修改已知变量的函数。
编辑:添加了更多细节。
我有这样的 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 或修改全局(或动态)范围变量的函数。也可以有一个修改已知变量的函数。
编辑:添加了更多细节。