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

これを実現するには、少なくとも2つの方法があります。バッククォート構文を使用するか、リストへの明示的な呼び出しを使用します。

(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 に答える