是否有内置的Emacs Lisp表单只能在未绑定的情况下设置变量?

Cha*_*uin 5 emacs elisp

我在elisp中创建了以下宏.仅当变量未绑定时,它才会将值"val"设置为变量"var".这是存在的,因此.emacs文件中设置的变量不会被其他地方踩踏.

(defmacro set-ifunbound (var val)
  `(if (not (boundp ',var))
       (setq ,var ,val)
     (identity ,var)))
Run Code Online (Sandbox Code Playgroud)

当然,这必须是一种常见的模式.是否有内置的方式做同样的事情?

Tom*_*Tom 5

defvar就是这么做的.只有当变量未绑定时,它才会为变量赋值.

  • 谢谢。我想我应该阅读文档。:) http://www.gnu.org/s/emacs/manual/html_node/elisp/Defining-Variables.html (2认同)