7.2.1 查找列表的长度:length

你可以使用Lisp函数length来查找列表中有多少元素,例如以下示例:

(length '(buttercup))
     ⇒ 1

(length '(daisy buttercup))
     ⇒ 2

(length (cons 'violet '(daisy buttercup)))
     ⇒ 3

在第三个例子中,cons函数用于构建一个包含三个元素的列表,然后将其作为参数传递给length函数。

我们还可以使用length来计算空列表中的元素个数:

(length ())
     ⇒ 0

正如你所期望的那样,空列表中的元素个数为零。

一个有趣的实验是找出当你尝试找到根本没有列表的长度时会发生什么;也就是说,如果你尝试调用length而没有给它提供参数,甚至没有空列表:

(length )

如果你评估这个表达式,你将看到错误消息:

Lisp error: (wrong-number-of-arguments length 0)

这意味着函数在期望某个其他数量的参数时(在本例中是一个参数),收到了错误数量的参数,即零。在这种情况下,期望一个参数,而参数是要测量其长度的列表。(注意,一个列表是一个参数,即使列表内有多个元素。)

错误消息中的‘length’是函数的名称。