Ricerca…
Ambito dinamico in azione
Ambito dinamico significa che le ricerche variabili si verificano nell'ambito in cui viene chiamata una funzione, non dove è definita .
$ x=3
$ func1 () { echo "in func1: $x"; }
$ func2 () { local x=9; func1; }
$ func2
in func1: 9
$ func1
in func1: 3
In un linguaggio con ambito lessicale, func1
cercherà sempre l'ambito globale per il valore di x
, perché func1
è definito nell'ambito locale.
In un linguaggio con ambito dinamico, func1
ricerca l'ambito in cui viene chiamato . Quando viene richiamato da func2
, per prima cosa appare nel corpo di func2
per un valore di x
. Se non fosse definito lì, cercherebbe nell'ambito globale, da cui func2
stato chiamato func2
.
Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow