nil
的解释在说明真值测试之前,我们需要解释一下 nil
。
在Emacs Lisp中,符号 nil
有两个含义。首先,它表示空列表。其次,它表示假,是在真假测试返回假时返回的值。nil
可以被写成空列表,()
,或者写作 nil
。就Lisp解释器而言,()
和 nil
是一样的。然而,人们倾向于将 nil
用于表示假,而将 ()
用于表示空列表。
在Emacs Lisp中,任何不是 nil
,即非空列表的值,被认为是真。这意味着如果一个求值返回了不是空列表的值,一个 if
表达式将测试为真。例如,如果一个数字被放在测试的槽位,它将被求值并返回它自己,因为这是数字在被求值时所做的。在这个条件语句中,if
表达式将测试为真。该表达式仅在通过求值表达式返回 nil
,即空列表时测试为假。
通过对以下示例中的两个表达式进行求值,您可以看到这一点。
在第一个示例中,数字4作为 if
表达式中的测试被求值并返回自己;因此,表达式的then部分被求值并返回:在回显区域中显示 ‘true’。在第二个示例中,nil
表示假;因此,表达式的else部分被求值并返回:在回显区域中显示 ‘false’。
(if 4 'true 'false)
(if nil 'true 'false)
顺便说一句,如果某个有用的值在返回真的测试时不可用,那么Lisp解释器将返回符号 t
代表真。例如,表达式 (> 5 4)
在被求值时返回 t
,您可以通过通常的方式进行求值查看:
(> 5 4)
另一方面,如果测试为假,则该函数返回 nil
。
(> 4 5)