Почему я иногда слышу термин «лексическая переменная»? - PullRequest
5 голосов
/ 19 декабря 2008

Я видел термин «лексическая переменная» несколько раз, в основном в контексте замыканий. Пол Грэм использует термин в своих книгах по Лиспу, ссылаясь на переменные, определенные с помощью выражения let.

Я понимаю, что лексическая область видимости - это еще одно название статической области видимости. Является ли лексическая переменная просто переменной, которая видна в ссылочной среде программного модуля?

Я надеюсь использовать этот термин, чтобы произвести впечатление на моих друзей и семью в этот праздничный сезон, кто-нибудь может мне помочь?

Ответы [ 2 ]

3 голосов
/ 20 декабря 2008

Лексическая переменная - это переменная, на которую можно ссылаться (по имени) только в пределах ее лексической области. Другими словами, область действия переменной определяется текстом программы, а не динамикой ее выполнения. Переменная и значение, связанное с ней, могут иметь экстент (срок действия) вне лексической области, например, если он захвачен в замыкании.

См. Это описание объема и экстента .

0 голосов
/ 19 декабря 2008

Лексическая переменная видима в среде ссылок программного модуля, но не все переменные, которые видны в среде ссылок программного модуля, обязательно являются лексическими переменными.

По сути, лексическая переменная - это переменная, специфичная для области ее определения. В языке, подобном Perl, у вас по существу есть два пространства имен, маскируемых друг над другом: базовое пространство имен динамического пакета и перекрывающееся лексическое пространство имен. Таким образом, $ foo может относиться к любому из них, в зависимости только от того, объявлено ли оно лексически.

...