【问题标题】:What does ? mean in (insert "hello" ?\s "world" ?\n)有什么作用?意思是 (插入 "hello" ?\s "world" ?\n)
【发布时间】:2020-11-23 03:15:07
【问题描述】:

函数插入的例子演示为:

(with-temp-buffer
  (insert "hello" ?\s "world" ?\n)
  (buffer-string))

? 在这里是什么意思?

【问题讨论】:

    标签: syntax emacs character elisp


    【解决方案1】:

    ?\s?\n字符的读取语法。第一个是空格字符的读取语法;第二个是字符NEWLINE(也称为Control J,有时显示为^J,其中^J 是换行符。

    在 Emacs Lisp 中,字符是正整数。它们的 ASCII 代码(值)可以写成数字,并且可以由 Lisp 阅读器读取:32\s)和10\n)。但是Elisp也提供了?引入的字符读取语法,这两个字符有自己的?语法。其他更普通的字符可以只加上?前缀:?s读作s?@读作@

    ? 读取语法对于人类比仅使用整数更具可读性:115(对于?s)和64 对于?@。但是你总是可以只使用整数——字符整数。

    您的示例:(insert "hello" ?\s "world" ?\n)。函数insert 接受字符串和字符作为其参数。在这种情况下,您传递字符串 "hello"、字符 ?\s(空格字符)、字符串 "world" 和字符 ?\n(换行符、Control J)。

    参见 Elisp 手册,节点 Basic Char Syntax

    【讨论】:

      猜你喜欢
      • 2011-09-12
      • 2019-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-24
      • 2018-05-02
      • 2019-08-24
      相关资源
      最近更新 更多