如何在Emacs Lisp中评估引用表达式的部分内容

时间:2012-09-08 13:41:04

标签: emacs elisp

假设我有一个返回引用列表的函数,如下所示:

(defun create-structure (n l)
  '(structure (name . n)(label . l)))

我想要返回的功能:

(create-structure foo bar)
-> '(structure (name . foo)(label . bar))

相反,我得到了解释:

-> '(structure (name . n)(label . l))

1 个答案:

答案 0 :(得分:6)

至少有两种方法可以实现这一点,使用反引用语法或显式调用列表。

(defun create-structure-1 (n l)
  `(structure (name . ,n) (label . ,l)))

(defun create-structure-2 (n l)
  (list 'structure (cons 'name n) (cons 'label l)))

GNU Emacs Lisp参考提供了一个很好的阅读主题: - http://www.gnu.org/software/emacs/manual/html_node/elisp/Backquote.html#Backquote