应传递给函数的数据类型取决于它使用的信息的种类。例如,像+
这样的函数的参数必须是数字,因为+
是对数字进行加法运算的。其他函数使用不同类型的数据作为它们的参数。
例如,concat
函数将两个或多个文本字符串连接或合并成一个字符串。其参数是字符串。连接两个字符字符串abc
和def
将产生单个字符串abcdef
。通过评估以下表达式可以看到这一点:
(concat "abc" "def")
评估这个表达式产生的值是"abcdef"
。
像substring
这样的函数使用字符串和数字作为参数。该函数返回字符串的一部分,即第一个参数的子字符串。该函数接受三个参数。其第一个参数是字符字符串,第二个和第三个参数是指示子字符串的开始(包括)和结束(不包括)的数字。这些数字表示从字符串开头开始的字符数(包括空格和标点符号)。注意字符串中的字符是从零开始编号的,而不是从一开始。
例如,如果你评估以下表达式:
(substring "The quick brown fox jumped." 16 19)
你将在回显区看到"fox"
。这些参数分别是字符串和两个数字。
请注意,传递给substring
的字符串是一个单一的原子,即使它由多个用空格分隔的单词组成。Lisp将引号之间的所有内容都计为字符串的一部分,包括空格。你可以将substring
函数看作是一种原子粒子解体器,因为它从一个否则不可分割的原子中提取了一部分。但是,substring
只能从参数是字符串的原子中提取子字符串,而不能从其他类型的原子(如数字或符号)中提取。