Spec-Zone.ru › Elisp

Правила области видимости привязок переменных

Когда вы создаёте локальную привязку переменной, она действует только в ограниченной части программы (см. Локальные переменные). В этом разделе подробно объясняется, что это означает.

У каждой локальной привязки есть определённые область видимости и время жизни. Область видимости указывает, где в исходном тексте программы доступна привязка. Время жизни указывает, когда привязка существует во время выполнения программы.

По историческим причинам существуют два диалекта Emacs Lisp, выбор которых определяется локальной для буфера переменной lexical-binding. В современном диалекте Emacs Lisp локальные привязки по умолчанию являются лексическими. Лексическая привязка имеет лексическую область видимости, то есть текстовое расположение любого обращения к переменной должно находиться внутри конструкции привязки. Кроме того, она имеет неограниченное время жизни, то есть в некоторых случаях привязка может продолжать существовать и после завершения выполнения конструкции привязки благодаря объектам, называемым замыканиями. Лексическую область видимости также часто называют статической областью видимости.

Локальные привязки также могут быть динамическими: такими они всегда являются в старом диалекте Emacs Lisp и могут быть в современном диалекте. Динамическая привязка имеет динамическую область видимости, то есть потенциально любая часть программы может обращаться к привязке переменной. Кроме того, она имеет динамическое время жизни, то есть привязка существует только во время выполнения конструкции привязки (например, тела формы let).

Старый диалект Emacs Lisp, в котором доступны только динамические привязки, по-прежнему используется по умолчанию для кода, загружаемого или вычисляемого из файлов Lisp, в которых не указано, какой диалект используется. Впоследствии современный диалект станет диалектом по умолчанию. Во всех файлах Lisp следует указывать используемый диалект, чтобы гарантировать их корректную работу в будущем.

В следующих подразделах подробнее описываются лексические и динамические привязки, а также способы включения лексических привязок в программах на Emacs Lisp.

  • Лексическая привязка
  • Динамическая привязка
  • Правильное использование динамических привязок
  • Выбор диалекта Lisp
  • Переход на лексические привязки

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/Variable-Scoping.html

Spec-Zone.ru

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