let
语句中的未初始化变量如果在 let
语句中不将变量绑定到特定的初始值,它们将自动绑定到初始值为 nil
,如下面的表达式所示:
(let ((birch 3) pine fir (oak 'some)) (message "这里有 %d 个变量,分别具有 %s、%s 和 %s 的值。" birch pine fir oak))
这里,变量列表是 ((birch 3) pine fir (oak 'some))
。
如果以通常的方式评估此表达式,将在你的回显区域中看到以下内容:
"这里有 3 个变量,分别具有 nil、nil 和 some 的值。"
在这个例子中,Emacs将符号 birch
绑定到数字3,将符号 pine
和 fir
绑定到 nil
,并将符号 oak
绑定到值 some
。
注意,在 let
的第一部分中,变量 pine
和 fir
作为不带括号的原子独立存在;这是因为它们被绑定到 nil
,即空列表。但是,oak
被绑定到 some
,因此是列表 (oak 'some)
的一部分。类似地,birch
被绑定到数字3,因此在具有该数字的列表中。 (由于数字在评估时为自身,因此数字不需要引用。此外,消息中使用 ‘%d’ 而不是 ‘%s’ 打印数字。) 这四个变量作为一个组被放入列表中,以将它们与 let
的主体分开。