- LISP 教程
- LISP - 首页
- LISP - 概述
- LISP - 环境
- LISP - 程序结构
- LISP - 基本语法
- LISP - 数据类型
- LISP - 宏
- LISP - 变量
- LISP - 常量
- LISP - 运算符
- LISP - 决策
- LISP - 循环
- LISP - 函数
- LISP - 谓词
- LISP - 数字
- LISP - 字符
- LISP - 数组
- LISP - 字符串
- LISP - 序列
- LISP - 列表
- LISP - 符号
- LISP - 向量
- LISP - 集合
- LISP - 树
- LISP - 哈希表
- LISP - 输入与输出
- LISP - 文件 I/O
- LISP - 结构体
- LISP - 包
- LISP - 错误处理
- LISP - CLOS
- LISP 有用资源
- Lisp - 快速指南
- Lisp - 有用资源
- Lisp - 讨论
Lisp - 数据类型
在 LISP 中,变量没有类型,但数据对象有。
LISP 数据类型可以分为以下几类。
标量类型 - 例如,数字类型、字符、符号等。
数据结构 - 例如,列表、向量、位向量和字符串。
任何变量都可以取任何 LISP 对象作为其值,除非您已明确声明。
虽然不需要为 LISP 变量指定数据类型,但在某些循环扩展、方法声明和其他一些我们将在后续章节中讨论的情况下,它会有所帮助。
数据类型按层次结构排列。数据类型是一组 LISP 对象,许多对象可能属于一个这样的集合。
typep 谓词用于查找对象是否属于特定类型。
type-of 函数返回给定对象的类型。
LISP 中的类型说明符
类型说明符是系统定义的用于数据类型的符号。
数组 | 定点数 | 包 | 简单字符串 |
原子 | 浮点数 | 路径名 | 简单向量 |
大数 | 函数 | 随机状态 | 单精度浮点数 |
位 | 哈希表 | 有理数 | 标准字符 |
位向量 | 整数 | 有理数 | 流 |
字符 | 关键字 | 读表 | 字符串 |
[通用] | 列表 | 序列 | [字符串字符] |
编译函数 | 长浮点数 | 短浮点数 | 符号 |
复数 | 空列表 | 带符号字节 | 真 |
构造函数 | 空列表 | 简单数组 | 无符号字节 |
双精度浮点数 | 数字 | 简单位向量 | 向量 |
除了这些系统定义的类型之外,您还可以创建自己的数据类型。当使用defstruct函数定义结构类型时,结构类型的名称将成为一个有效的类型符号。
示例 - 使用标量数据类型
创建一个名为 main.lisp 的新源代码文件,并在其中键入以下代码。
main.lisp
; set values to variables (setq x 10) (setq y 34.567) (setq ch nil) (setq n 123.78) (setq bg 11.0e+4) (setq r 124/2) ; print values of variables (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 的新源代码文件,并在其中键入以下代码。
main.lisp
; define variables and set values (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 all variables (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)
广告