12.2 常量变量

在 Emacs Lisp 中,有些特定的符号求值后得到的结果之它本身。比如 nil 和 t ,以及由 ':' 作为开端的符号(这些符号称为 关键字)这符号既不能被重新绑定新的值,也不能修改它们的值 (value)。任何尝试给 nil 和 t 绑定新值的操作都会抛出 setting-constant 错误。如果关键字符号在标准 obarray 中 interned 了,那么这个规则同样适合关键字符号。

nil = 'nil
    => nil
(setq nil 500)
error -> Attempt to set constant symbol: nil

Function: keywordp object 如果 object 在 标准 obarray 中 interned 且一个以 ':' 开头的符号,则会返回 t。其他情况返回 nil。

这些常量变量和 使用特殊表达式 defconst 定义的常量变量在底层是不同的。 defconst 主要用于定义方便人类阅读,且不期望被修改的变量。不过需要注意的是, 当你尝试修改这种常量变量时, Emacs 并不会抛出任何错误。

还有一小部分额外的符号被设计为只读,但是是因为其他的一些原因。比如: enable-multibyte-characters, most-positive-fixnum, most-negative-fixnum,等等。任何修改绑定或重设新值的操作都会抛出 setting-constant 错误。

最后更新于