4

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

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

我希望函数返回:

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

相反,我得到了预期:

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

1 回答 1

8

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

(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

于 2012-09-08T14:02:41.507 回答