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