在 elisp 中隐藏一个全局变量
Shadow a global variable in elisp
首先我定义一个全局变量x
:
ELISP> (defvar x (cons 1 3))
x
ELISP> x
(1 . 3)
经过一些操作,我想隐藏x
并将其值重新赋值给5:
ELISP> (defvar x 5)
x
ELISP> x
(1 . 3)
但还是有原来的价值。如何隐藏全局变量?
如果变量已经定义,defvar
形式不会覆盖值。这样一来,即使在加载使用 defvar
.
声明和使用 preference
的包之前,用户也可以在 .emacs
中说 (setq preference value)
如上所述,使用 setq
永久无条件地替换任何以前的值。
要暂时覆盖一个值,请使用let
。
(let ((preference temp-value))
... code which needs to see temp-value ...)
;; previous global value is restored after the let form
首先我定义一个全局变量x
:
ELISP> (defvar x (cons 1 3))
x
ELISP> x
(1 . 3)
经过一些操作,我想隐藏x
并将其值重新赋值给5:
ELISP> (defvar x 5)
x
ELISP> x
(1 . 3)
但还是有原来的价值。如何隐藏全局变量?
如果变量已经定义,defvar
形式不会覆盖值。这样一来,即使在加载使用 defvar
.
preference
的包之前,用户也可以在 .emacs
中说 (setq preference value)
如上所述,使用 setq
永久无条件地替换任何以前的值。
要暂时覆盖一个值,请使用let
。
(let ((preference temp-value))
... code which needs to see temp-value ...)
;; previous global value is restored after the let form