1.3.2 nilt

在 Emacs Lisp 中,符号 nil 有三种不同含义:其一,它是名为 ‘nil’ 的符号;其二,它代表逻辑布尔值 false;其三,它表示空列表 —— 即包含零个元素的列表。当 nil 作为变量使用时,其值始终为 nil

对于 Lisp 读取器而言,‘()’ 和 ‘nil’ 完全等价:它们指向同一个对象(符号 nil)。这两种书写形式仅为方便人类阅读而设计。Lisp 读取器读取 ‘()’ 或 ‘nil’ 后,无法区分程序员实际书写的是哪一种形式。

在本手册中,若想强调 “空列表” 这一含义,我们会写作 ();若想强调布尔值 false 这一含义,则写作 nil。这种写法也适用于 Lisp 程序编写,是值得遵循的良好约定。

(cons 'foo ())                ; 强调空列表
(setq foo-flag nil)           ; 强调布尔值 false

在需要布尔值的上下文环境中,任何非 nil 的值都会被视为 true。不过,t 是表示布尔值 true 的首选形式。当你需要选择一个值来代表 true 且无其他选择依据时,应使用 t。符号 t 的值始终为 t

在 Emacs Lisp 中,nilt 是特殊符号,它们的求值结果始终是自身。因此,在程序中将它们用作常量时无需加引号。若尝试修改它们的值,会触发 设置常量错误(setting-constant error)。See 永不改变的变量.

Function: booleanp object

object 是两个标准布尔值(tnil)之一,则返回非 nil 值。


emacs

Emacs

org-mode

Orgmode

Donations

打赏

Copyright

© 2025 Jasper Hsu

Creative Commons

Creative Commons

Attribute

Attribute

Noncommercial

Noncommercial

Share Alike

Share Alike