2.2 特殊读取语法

Emacs Lisp 通过特殊井号表示法表示许多特殊对象和结构。

#<…>

没有读取语法的对象会以这种形式展示(see 打印表示与读入语法)。

##

名称为空字符串的已 intern 符号的打印表示(see 符号类型)。

#'

这是 function 的简写形式,见 匿名函数

#:

名称为 foo 的未 intern 符号的打印表示是 ‘#:foo’(see 符号类型)。

#N

打印循环结构时,用于表示结构自引用的位置,‘N’ 是起始列表编号:

(let ((a (list 1)))
  (setcdr a a))
=> (1 . #0)
#N=
#N#

#N=’ 为一个对象命名,‘#N#’ 表示该对象。这样在重新读取时,它们会是同一个对象而非副本(see 循环对象的读取语法)。

#xN

以十六进制表示 ‘N’(如 ‘#x2a’)。

#oN

以八进制表示 ‘N’(如 ‘#o52’)。

#bN

以二进制表示 ‘N’(如 ‘#b101010’)。

#(…)

字符串的文本属性(see 字符串中的文本属性)。

#^

字符表(see 字符表类型)。

#s(hash-table …)

哈希表(see 哈希表类型)。

?C

字符(see 基本字符语法)。

#$

字节编译文件中的当前文件名(see 文档字符串与编译)。不建议在 Emacs Lisp 源文件中使用。

#@N

跳过接下来的 ‘N’ 个字符(see 注释)。用于字节编译文件,不建议在 Emacs Lisp 源文件中使用。

#f

表示后续的表达式无法被 Emacs Lisp 读取器读取。该标记仅用于显示文本(当它比其他表示不可读表达式的方式更美观时),绝不会出现在任何 Lisp 文件中。


emacs

Emacs

org-mode

Orgmode

Donations

打赏

Copyright

© 2025 Jasper Hsu

Creative Commons

Creative Commons

Attribute

Attribute

Noncommercial

Noncommercial

Share Alike

Share Alike