我在elisp中创建了以下宏.仅当变量未绑定时,它才会将值"val"设置为变量"var".这是存在的,因此.emacs文件中设置的变量不会被其他地方踩踏.
(defmacro set-ifunbound (var val)
`(if (not (boundp ',var))
(setq ,var ,val)
(identity ,var)))
Run Code Online (Sandbox Code Playgroud)
当然,这必须是一种常见的模式.是否有内置的方式做同样的事情?
defvar就是这么做的.只有当变量未绑定时,它才会为变量赋值.