在elisp中隐藏一个全局变量

问题描述 投票:0回答:1

我定义一个全局变量x

ELISP> (defvar x (cons 1 3))
x
ELISP> x
(1 . 3)

经过一些操作后,我想对x进行阴影处理并将值10重新分配给

ELISP> (defvar x 5)
x
ELISP> x
(1 . 3)

我的解决方案被证明是错误的。如何遮盖全局变量

elisp
1个回答
0
投票

defvar格式不会覆盖该值,如果已经定义了变量。这样,即使在装入使用(setq preference value)声明并使用.emacs的程序包之前,用户也可以在preference中说出defvar

如上所述,使用setq永久无条件地替换任何先前的值。

临时覆盖值,请使用let

(let ((preference temp-value))
    ... code which needs to see temp-value ...)
;; previous global value is restored after the let form
© www.soinside.com 2019 - 2024. All rights reserved.