我定义一个全局变量x
ELISP> (defvar x (cons 1 3))
x
ELISP> x
(1 . 3)
经过一些操作后,我想对x进行阴影处理并将值10重新分配给
ELISP> (defvar x 5)
x
ELISP> x
(1 . 3)
我的解决方案被证明是错误的。如何遮盖全局变量
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