1.8.1 参数的数据类型

应传递给函数的数据类型取决于它使用的信息的种类。例如,像+这样的函数的参数必须是数字,因为+是对数字进行加法运算的。其他函数使用不同类型的数据作为它们的参数。

例如,concat函数将两个或多个文本字符串连接或合并成一个字符串。其参数是字符串。连接两个字符字符串abcdef将产生单个字符串abcdef。通过评估以下表达式可以看到这一点:

(concat "abc" "def")

评估这个表达式产生的值是"abcdef"

substring这样的函数使用字符串和数字作为参数。该函数返回字符串的一部分,即第一个参数的子字符串。该函数接受三个参数。其第一个参数是字符字符串,第二个和第三个参数是指示子字符串的开始(包括)和结束(不包括)的数字。这些数字表示从字符串开头开始的字符数(包括空格和标点符号)。注意字符串中的字符是从零开始编号的,而不是从一开始。

例如,如果你评估以下表达式:

(substring "The quick brown fox jumped." 16 19)

你将在回显区看到"fox"。这些参数分别是字符串和两个数字。

请注意,传递给substring的字符串是一个单一的原子,即使它由多个用空格分隔的单词组成。Lisp将引号之间的所有内容都计为字符串的一部分,包括空格。你可以将substring函数看作是一种原子粒子解体器,因为它从一个否则不可分割的原子中提取了一部分。但是,substring只能从参数是字符串的原子中提取子字符串,而不能从其他类型的原子(如数字或符号)中提取。