📅  最后修改于: 2020-11-03 07:07:13             🧑  作者: Mango
在LISP中,不键入变量,但键入数据对象。
LISP数据类型可以分类为。
标量类型-例如,数字类型,字符,符号等。
数据结构-例如,列表,向量,位向量和字符串。
除非您明确声明,否则任何变量都可以将任何LISP对象作为其值。
尽管不必为LISP变量指定数据类型,但是它在某些循环扩展,方法声明以及我们将在后面的章节中讨论的其他情况下会有所帮助。
数据类型按层次结构排列。数据类型是LISP对象的集合,许多对象可能属于一个这样的集合。
typep谓词用于查找对象是否属于特定类型。
type-of函数返回给定对象的数据类型。
类型说明符是系统为数据类型定义的符号。
array | fixnum | package | simple-string |
atom | float | pathname | simple-vector |
bignum | function | random-state | single-float |
bit | hash-table | ratio | standard-char |
bit-vector | integer | rational | stream |
character | keyword | readtable | string |
[common] | list | sequence | [string-char] |
compiled-function | long-float | short-float | symbol |
complex | nill | signed-byte | t |
cons | null | simple-array | unsigned-byte |
double-float | number | simple-bit-vector | vector |
除了这些系统定义的类型之外,您还可以创建自己的数据类型。当使用defstruct函数定义结构类型时,该结构类型的名称将成为有效的类型符号。
创建名为main.lisp的新源代码文件,并在其中键入以下代码。
(setq x 10)
(setq y 34.567)
(setq ch nil)
(setq n 123.78)
(setq bg 11.0e+4)
(setq r 124/2)
(print x)
(print y)
(print n)
(print ch)
(print bg)
(print r)
当您单击执行按钮或键入Ctrl + E时,LISP立即执行它,返回的结果是-
10
34.567
123.78
NIL
110000.0
62
接下来,让我们检查上一个示例中使用的变量的类型。创建名为main的新源代码文件。 lisp并在其中键入以下代码。
(defvar x 10)
(defvar y 34.567)
(defvar ch nil)
(defvar n 123.78)
(defvar bg 11.0e+4)
(defvar r 124/2)
(print (type-of x))
(print (type-of y))
(print (type-of n))
(print (type-of ch))
(print (type-of bg))
(print (type-of r))
当您单击执行按钮或键入Ctrl + E时,LISP立即执行它,返回的结果是-
(INTEGER 0 281474976710655)
SINGLE-FLOAT
SINGLE-FLOAT
NULL
SINGLE-FLOAT
(INTEGER 0 281474976710655)