Suche…


Dynamisches Scoping in Aktion

Dynamisches Scoping bedeutet, dass variable Lookups in dem Bereich stattfinden, in dem eine Funktion aufgerufen wird , und nicht dort, wo sie definiert ist .

$ x=3
$ func1 () { echo "in func1: $x"; }
$ func2 () { local x=9; func1; }
$ func2
in func1: 9
$ func1
in func1: 3

In einer lexikalischen Sprache, func1 würde immer schauen im globalen Bereich für den Wert von x , weil func1 im lokalen Bereich definiert ist.

In einer Sprache mit func1 sucht func1 in dem Bereich, in dem es aufgerufen wird . Wenn es von func2 aus func2 , sucht es zuerst im Körper von func2 nach einem Wert von x . Wenn es dort nicht definiert wäre, würde es im globalen Bereich aussehen, von dem aus func2 aufgerufen wurde.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow