2.15 类型 (Types)
Lisp 处理类型的方法非常灵活。在很多语言里,变量是有类型的,得声明变量的类型才能使用它。在 Common Lisp 里,数值才有类型,而变量没有。你可以想像每个对象,都贴有一个标明其类型的标签。这种方法叫做显式类型(manifest typing)。你不需要声明变量的类型,因为变量可以存放任何类型的对象。
虽然从来不需要声明类型,但出于效率的考量,你可能会想要声明变量的类型。类型声明在第 13.3 节时讨论。
Common Lisp 的内置类型,组成了一个类别的层级。对象总是不止属于一个类型。举例来说,数字 27 的类型,依普遍性的增加排序,依序是 fixnum
、 integer
、 rational
、 real
、 number
、 atom
和 t
类型。(数值类型将在第 9 章讨论。)类型 t
是所有类型的基类(supertype)。所以每个对象都属于 t
类型。
函数 typep
接受一个对象和一个类型,然后判定对象是否为该类型,是的话就返回真:
> (typep 27 'integer)
T
我们会在遇到各式内置类型时来讨论它们。
当前内容版权归 readthedocs 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请访问 readthedocs .