1.9.3 计数

以下是一个示例,展示了如何在计数器中使用setq。您可以使用这种方法来计算程序的某个部分重复的次数。首先将一个变量设置为零;然后在程序重复自身时每次将该数字加一。为此,您需要一个用作计数器的变量,以及两个表达式:一个初始的setq表达式,将计数器变量设置为零;和第二个setq表达式,在每次评估时递增计数器。

(setq counter 0)                ; 我们称之为初始化器。

(setq counter (+ counter 1))    ; 这是递增器。

counter                         ; 这是计数器。

(在‘;’之后的文本是注释。See 修改函数定义.)

如果您评估这些表达式中的第一个,即初始化器(setq counter 0),然后评估第三个表达式counter,数字0将显示在回显区域中。然后,如果您评估第二个表达式,即递增器(setq counter (+ counter 1)),计数器将获得值1。因此,如果您再次评估counter,数字1将显示在回显区域中。每次评估第二个表达式时,计数器的值将递增。

当您评估递增器(setq counter (+ counter 1))时,Lisp解释器首先评估最内层的列表;这是加法。为了评估此列表,它必须评估变量counter和数字1。当它评估变量counter时,它会得到它的当前值。它将这个值和数字1传递给+,将它们相加。然后,总和作为内部列表的值返回,并传递给setq,将变量counter设置为这个新值。因此,变量counter的值被更改。