7 记录

记录的作用是让程序员能够创建 Emacs 本身并未内置的新类型对象。它被用作 cl-defstructdefclass 实例的底层表示形式。

在内部,记录对象与向量非常相似:可以用 aref 访问其槽位,用 copy-sequence 对其进行复制。但记录的第一个槽位用于存放由 type-of 返回的类型信息。此外,在当前实现中,记录最多只能有 4096 个槽位,而向量可以大得多。与数组一样,记录使用从零开始的索引:第一个槽位的下标为 0。

类型槽位应当是一个符号或类型描述符。如果是类型描述符,则会返回表示其类型的符号;详见 类型描述符。其他类型的对象则会原样返回。

记录的打印表示形式以 ‘#s’ 开头,后面跟一个表示其内容的列表。列表的第一个元素必须是记录的类型,后续元素为记录的各个槽位。

为避免与其他类型名冲突,定义新记录类型的 Lisp 程序通常应遵循所在包的命名规范来命名类型。注意:可能产生冲突的类型名,在定义该记录类型的包加载时未必已知,它们可能在之后才被加载。

记录在求值时被视为常量:对它求值的结果就是该记录本身。这一过程不会对槽位进行求值,甚至不会检查槽位。See 自求值形式

emacs

Emacs

org-mode

Orgmode

Donations

打赏

Copyright

© 2025 Jasper Hsu

Creative Commons

Creative Commons

Attribute

Attribute

Noncommercial

Noncommercial

Share Alike

Share Alike