Spec-Zone.ru › Elisp

Замыкания

Как объясняется в разделе Правила области видимости для привязок переменных, Emacs позволяет включать лексическое связывание переменных. Если лексическое связывание включено, любая именованная функция, которую вы создаёте (например, с помощью defun), а также любая анонимная функция, которую вы создаёте с помощью макроса lambda, специальной формы function или синтаксиса #' (см. раздел Анонимные функции), автоматически преобразуется в замыкание.

Замыкание — это функция, которая также хранит сведения о лексическом окружении, существовавшем в момент определения функции. При её вызове все ссылки на лексические переменные в её определении используют сохранённое лексическое окружение. Во всех остальных отношениях замыкания ведут себя во многом как обычные функции; в частности, их можно вызывать так же, как обычные функции.

Пример использования замыкания см. в разделе Лексическое связывание.

;; lexical binding is enabled.
(lambda (x) (* x x))
     ⇒ #f(lambda (x) [t] (* x x))

Внутренняя структура замыкания является деталью реализации, поэтому мы не рекомендуем изучать или изменять её напрямую. Желающим узнать больше см. раздел Объекты функций-замыканий.

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

Spec-Zone.ru

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