Spec-Zone.ru › Elisp

Обратная кавычка

Конструкции с обратной кавычкой позволяют вам цитировать список, но выборочно вычислять элементы этого списка. В самом простом случае, это идентично специальной форме quote (описанной в предыдущем разделе; см. Цитата). Например, эти две формы дают идентичные результаты:

`(a list of (+ 2 3) elements)
     ⇒ (a list of (+ 2 3) elements)
'(a list of (+ 2 3) elements)
     ⇒ (a list of (+ 2 3) elements)

Специальный маркер ‘,’ внутри аргумента к обратной кавычке указывает на значение, которое не является постоянным. Интерпретатор Emacs Lisp вычисляет аргумент ‘,’ и помещает значение в структуру списка:

`(a list of ,(+ 2 3) elements)
     ⇒ (a list of 5 elements)

Подстановка с помощью ‘,’ разрешена и на более глубоких уровнях структуры списка. Например:

`(1 2 (3 ,(+ 4 5)))
     ⇒ (1 2 (3 9))

Вы также можете вставить вычисленное значение в результирующий список, используя специальный маркер ‘,@’. Элементы вставленного списка становятся элементами на том же уровне, что и другие элементы результирующего списка. Эквивалентный код без использования ‘`’ часто нечитаем. Вот несколько примеров:

(setq some-list '(2 3))
     ⇒ (2 3)
(cons 1 (append some-list '(4) some-list))
     ⇒ (1 2 3 4 2 3)
`(1 ,@some-list 4 ,@some-list)
     ⇒ (1 2 3 4 2 3)
(setq list '(hack foo bar))
     ⇒ (hack foo bar)
(cons 'use
  (cons 'the
    (cons 'words (append (cdr list) '(as elements)))))
     ⇒ (use the words foo bar as elements)
`(use the words ,@(cdr list) as elements)
     ⇒ (use the words foo bar as elements)

Если подвыражение конструкции с обратной кавычкой не имеет подстановок или вставок, оно ведет себя как quote в том, что оно возвращает списки, векторы и строки, которые могут быть общими и не должны изменяться. См. Самооцениваемые формы.

Copyright © 1990-1996, 1998-2022 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Backquote.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API