3.6.2 let 表达式示例

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

(let ((zebra "stripes")
      (tiger "fierce"))
  (message "One kind of animal has %s and another is %s."
           zebra tiger))

这里的变量列表是 ((zebra "stripes") (tiger "fierce"))

两个变量分别是 zebratiger。 每个变量都是一个二元列表的第一个元素,对应的值是列表的第二个元素。 在变量列表中,Emacs 将变量 zebra 绑定到值 "stripes"11, 将变量 tiger 绑定到值 "fierce"。 本例中两个值均为字符串,它们也可以是列表或符号。 存放变量的列表之后是 let 的函数体。 本例中,函数体是一个在回显区打印字符串的列表,使用了 message 函数。

你可以按照常规方式对该示例求值:将光标移至最后一个括号后, 输入 C-x C-e。执行后,回显区会显示如下内容:

"One kind of animal has stripes and another is fierce."

如前所述,message 函数会打印其第一个参数, 并替换其中的 ‘%s’。本例中,变量 zebra 的值 会打印在第一个 ‘%s’ 位置,变量 tiger 的值 会打印在第二个 ‘%s’ 位置。


Footnotes

(11)

根据贾雷德·戴蒙德在《枪炮、病菌与钢铁》中的描述:“… 斑马长大后 会变得异常危险”,但这里想表达的是它们不会像老虎一样凶猛。 (1997, W. W. Norton and Co., ISBN 0-393-03894-2, 第 171 页)