5

Ich habe den Ausdruck "lexikalische Variable" einige Male gesehen, meistens im Zusammenhang mit Verschlüssen. Paul Graham verwendet den Begriff in seinen Büchern über Lisp, der sich auf Variablen bezieht, die unter Verwendung des Let-Ausdrucks definiert sind.Warum höre ich manchmal den Ausdruck "lexikalische Variable?"

Ich verstehe, dass lexikalische Scoping ist ein anderer Name für statische Scoping. Ist die lexikalische Variable nur eine Variable, die in der Referenzierungsumgebung einer Programmeinheit sichtbar ist?

Ich hoffe, diesen Ausdruck zu verwenden, um meine Freunde und Familie in dieser Ferienzeit zu beeindrucken, kann mir jemand helfen?

+2

+1 für den Wunsch, Ihre Familie mit Programmierbegriffen zu beeindrucken. Du musst eine nerdy Familie haben. :) –

Antwort

0

Eine lexikalische Variable ist in der referenzierenden Umgebung einer Programmeinheit sichtbar, aber nicht alle Variablen, die in der referenzierenden Umgebung einer Programmeinheit sichtbar sind, sind notwendigerweise lexikalische Variablen.

Grundsätzlich ist eine lexikalische Variable eine spezifische zu dem Bereich, in dem es definiert ist. In einer Sprache wie Perl haben Sie im Wesentlichen zwei Namespaces, die übereinander maskiert sind: den zugrunde liegenden dynamischen Paket-Namespace und den überlagerten lexikalischen Namespace. Also könnte sich $ foo entweder darauf beziehen, nur davon abhängig, ob es lexikalisch erklärt wurde.

+0

Also wäre es sicher zu sagen, dass die Begriffe "lexikalische Variable" und "lokale Variable" austauschbar sind? Mit lexikalischen etwas genauer? –

+0

Nein. Perl verfügt über bereichsspezifische Variablen, die nicht lexikalisch sind (sie sind im Paketnamespace implementiert), wobei das Schlüsselwort local() verwendet wird. – chaos

3

Eine lexikalische Variable ist eine Variable, die nur innerhalb ihres lexikalischen Geltungsbereichs (namentlich) referenziert werden kann. Mit anderen Worten, der Gültigkeitsbereich der Variablen wird durch den Text des Programms definiert, nicht durch die Dynamik der Programmausführung. Die Variable und der Wert, der an sie gebunden ist, können ein Ausmaß (Leben) haben, das über den lexikalischen Geltungsbereich hinausgeht, z. B. wenn es in einem Abschluss erfasst wird.

Siehe diese Beschreibung von scope and extent.