什么?意思是 (insert "hello" ?\s "world" ?\n)
What does ? mean in (insert "hello" ?\s "world" ?\n)
函数insert示例演示如下:
(with-temp-buffer
(insert "hello" ?\s "world" ?\n)
(buffer-string))
这里的?
是什么意思?
?\s
和 ?\n
是 字符 的读取语法。第一个是 space 字符的读取语法;第二个字符 NEWLINE
(也称为 Control J,有时显示为 ^J
,其中 ^J 是换行符。
在 Emacs Lisp 中,字符是正整数。它们可以写成 ASCII 码(值)的数字,当这样写时,它们可以被 Lisp reader 读取:32
(对于 \s
)和 10
(对于 \n
)。但是 Elisp 还提供了 ?
引入的字符读取语法,这两个字符有自己的 ?
语法。其他更普通的字符可以只用?
作为前缀:?s
读作字符s
,?@
读作字符@
。
?
读取语法比仅使用整数 对于人类 更具可读性:115
(对于 ?s
)和 64
对于 ?@
。但您始终可以只使用整数——字符 是 整数。
您的示例:(insert "hello" ?\s "world" ?\n)
。函数 insert
接受字符串和字符作为其参数。在这种情况下,您传递字符串 "hello"
、字符 ?\s
(space 字符)、字符串 "world"
和字符 ?\n
(换行符,Control J)。
参见 Elisp 手册,节点 Basic Char Syntax。
函数insert示例演示如下:
(with-temp-buffer
(insert "hello" ?\s "world" ?\n)
(buffer-string))
这里的?
是什么意思?
?\s
和 ?\n
是 字符 的读取语法。第一个是 space 字符的读取语法;第二个字符 NEWLINE
(也称为 Control J,有时显示为 ^J
,其中 ^J 是换行符。
在 Emacs Lisp 中,字符是正整数。它们可以写成 ASCII 码(值)的数字,当这样写时,它们可以被 Lisp reader 读取:32
(对于 \s
)和 10
(对于 \n
)。但是 Elisp 还提供了 ?
引入的字符读取语法,这两个字符有自己的 ?
语法。其他更普通的字符可以只用?
作为前缀:?s
读作字符s
,?@
读作字符@
。
?
读取语法比仅使用整数 对于人类 更具可读性:115
(对于 ?s
)和 64
对于 ?@
。但您始终可以只使用整数——字符 是 整数。
您的示例:(insert "hello" ?\s "world" ?\n)
。函数 insert
接受字符串和字符作为其参数。在这种情况下,您传递字符串 "hello"
、字符 ?\s
(space 字符)、字符串 "world"
和字符 ?\n
(换行符,Control J)。
参见 Elisp 手册,节点 Basic Char Syntax。