`@` 在 elisp 中是什么意思?
What does the `@` mean in elisp?
这很可能是一个愚蠢的问题,但我没有在我读过的 elisp 中遇到 @
符号,我想知道它是什么意思(前面是 ,
以及)在这个 code 中?我在提供我认为合适的搜索短语时遇到了一些困难。
如果 link 腐烂:
(defmacro zenburn-with-color-variables (&rest body)
"`let' bind all colors defined in `zenburn-colors-alist' around BODY.
Also bind `class' to ((class color) (min-colors 89))."
(declare (indent 0))
`(let ((class '((class color) (min-colors 89)))
,@(mapcar (lambda (cons)
(list (intern (car cons)) (cdr cons)))
zenburn-colors-alist))
,@body))
这是一个elisp宏定义,它定义了一个模板,用于在编译时被其他代码替换的代码。一个不错的介绍是 Paul Graham 的 On Lisp
的第 7 章
通过检查 elisp 手册的索引询问 Emacs:
- C-hig
(elisp)
RET
- 我
@
RET
关注结果:* ,@ (with backquote) [Index]: Backquote. (line 29)
You can also "splice" an evaluated value into the resulting list,
using the special marker ‘,@’. The elements of the spliced list become
elements at the same level as the other elements of the resulting list.
The equivalent code without using ‘`’ is often unreadable. Here are
some examples:
[...]
这很可能是一个愚蠢的问题,但我没有在我读过的 elisp 中遇到 @
符号,我想知道它是什么意思(前面是 ,
以及)在这个 code 中?我在提供我认为合适的搜索短语时遇到了一些困难。
如果 link 腐烂:
(defmacro zenburn-with-color-variables (&rest body)
"`let' bind all colors defined in `zenburn-colors-alist' around BODY.
Also bind `class' to ((class color) (min-colors 89))."
(declare (indent 0))
`(let ((class '((class color) (min-colors 89)))
,@(mapcar (lambda (cons)
(list (intern (car cons)) (cdr cons)))
zenburn-colors-alist))
,@body))
这是一个elisp宏定义,它定义了一个模板,用于在编译时被其他代码替换的代码。一个不错的介绍是 Paul Graham 的 On Lisp
的第 7 章通过检查 elisp 手册的索引询问 Emacs:
- C-hig
(elisp)
RET - 我
@
RET
关注结果:* ,@ (with backquote) [Index]: Backquote. (line 29)
You can also "splice" an evaluated value into the resulting list,
using the special marker ‘,@’. The elements of the spliced list become
elements at the same level as the other elements of the resulting list.
The equivalent code without using ‘`’ is often unreadable. Here are
some examples:
[...]