let
表达式以下表达式创建并为两个变量 zebra
和 tiger
赋予初始值。let
表达式的主体是一个调用 message
函数的列表。
(let ((zebra "条纹") (tiger "凶猛")) (message "一种动物有 %s,另一种是 %s。" zebra tiger))
在这里,varlist 是 ((zebra "条纹") (tiger "凶猛"))
。
这两个变量是 zebra
和 tiger
。每个变量都是两元素列表的第一个元素,每个值都是其两元素列表的第二个元素。在 varlist 中,Emacs 将变量 zebra
绑定到值 "条纹"
9,并将变量 tiger
绑定到值 "凶猛"
。在这个例子中,两个值都是字符串。这些值同样可以是另一个列表或符号。let
的主体紧随包含变量的列表之后。在这个例子中,主体是一个列表,使用 message
函数在回显区域打印一个字符串。
您可以按照通常的方式评估这个示例,将光标放在最后一个括号后,然后键入 C-x C-e。这样做时,回显区域将显示以下内容:
"一种动物有条纹,另一种是凶猛。"
正如我们之前看到的,message
函数打印其第一个参数,除了 ‘%s’。在这个例子中,变量 zebra
的值将打印在第一个 ‘%s’ 的位置,而变量 tiger
的值将打印在第二个 ‘%s’ 的位置。
根据Jared Diamond在 枪炮、病菌与钢铁 中的说法,“… 斑马在变老时变得异常危险”,但这里的说法是它们不会像老虎一样变得凶猛。(1997, W. W. Norton 和 Co., ISBN 0-393-03894-2, 第171页)