3.6.2 示例 let 表达式

以下表达式创建并为两个变量 zebratiger 赋予初始值。let 表达式的主体是一个调用 message 函数的列表。

(let ((zebra "条纹")
      (tiger "凶猛"))
  (message "一种动物有 %s,另一种是 %s。"
           zebra tiger))

在这里,varlist 是 ((zebra "条纹") (tiger "凶猛"))

这两个变量是 zebratiger。每个变量都是两元素列表的第一个元素,每个值都是其两元素列表的第二个元素。在 varlist 中,Emacs 将变量 zebra 绑定到值 "条纹"9,并将变量 tiger 绑定到值 "凶猛"。在这个例子中,两个值都是字符串。这些值同样可以是另一个列表或符号。let 的主体紧随包含变量的列表之后。在这个例子中,主体是一个列表,使用 message 函数在回显区域打印一个字符串。

您可以按照通常的方式评估这个示例,将光标放在最后一个括号后,然后键入 C-x C-e。这样做时,回显区域将显示以下内容:

"一种动物有条纹,另一种是凶猛。"

正如我们之前看到的,message 函数打印其第一个参数,除了 ‘%s’。在这个例子中,变量 zebra 的值将打印在第一个 ‘%s’ 的位置,而变量 tiger 的值将打印在第二个 ‘%s’ 的位置。


Footnotes

(9)

根据Jared Diamond在 枪炮、病菌与钢铁 中的说法,“… 斑马在变老时变得异常危险”,但这里的说法是它们不会像老虎一样变得凶猛。(1997, W. W. Norton 和 Co., ISBN 0-393-03894-2, 第171页)