Bash
avgränsning
Sök…
Dynamisk scoping i aktion
Dynamisk scoping innebär att variabla uppslag inträffar i det område där en funktion kallas , inte där den är definierad .
$ x=3
$ func1 () { echo "in func1: $x"; }
$ func2 () { local x=9; func1; }
$ func2
in func1: 9
$ func1
in func1: 3
På ett lexiskt skopat språk skulle func1
alltid se i det globala omfånget för värdet av x
, eftersom func1
definieras i det lokala omfånget.
På ett dynamiskt skopat språk ser func1
inom ramen för det den heter . När det kallas func2
, ser det först i kroppen av func2
efter ett värde av x
. Om det inte definierades där, skulle det se ut i det globala omfånget, där func2
kallades från.
Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow