7.2.1 获取列表长度:length

可以使用 Lisp 函数 length 获取列表中的元素个数,示例如下:

(length '(buttercup))
     ⇒ 1

(length '(daisy buttercup))
     ⇒ 2

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

第三个例子中,cons 先构造出一个三元素列表,再将其作为参数传给 length 函数。

我们也可以用 length 统计空列表的元素个数:

(length ())
     ⇒ 0

正如预期,空列表的元素个数为 0。

一个有趣的尝试是:尝试不对任何列表求长度,也就是调用 length 时不提供任何参数,连空列表都不传:

(length )

执行后会看到如下错误信息:

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

这表示函数收到的参数个数错误:本应接收指定个数的参数,实际却收到 0 个。在本例中,length 期望接收一个参数,即需要测量长度的列表。(注意:一个列表就算包含很多元素,也仍然只是一个参数。)

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