Manuale di Gretl: Gnu Regression, Econometrics and Time-series Library | ||
---|---|---|
Indietro | Capitolo 10. Funzioni definite dall'utente | Avanti |
In modalità predefinita, tutte le variabili sono "globali": c'è un registro dei nomi di variabile condiviso dallo script principale e da qualunque funzione venga chiamata da esso. Le variabili nello script principale possono essere lette e modificate dall'interno delle funzioni, e le nuove variabili create all'interno delle funzioni vengono aggiunte all'elenco del dataset.
In alcuni casi, tuttavia, può essere utile creare variabili che siano locali, confinate a una particolare funzione. È possibile farlo usando la parola chiave my con genr. Se all'interno di una funzione si scrive
genr x = espressione
viene creata una variabile globale (o viene modificata la variabile
globale x
se esiste già). Ma scrivendo
genr my x = espressione
viene creata una nuova variabile x
locale
alla funzione, che scomparirà una volta che la funzione è stata
eseguita. Se esiste già una variabile x
al di fuori
della funzione, essa verrà "mascherata": la variabile
x
esterna sarà inaccessibile all'interno della funzione
e non sarà modificabile da comandi come genr x = …
finché l'esecuzione della funzione non sarà terminata.
Questo comportamento è illustrato dallo script di esempio nella Sezione Esempio che mostra l'ambito delle variabili.
Quando una funzione, ad es. fun1, chiama un'altra funzione, fun2, tutte le variabili locali (my) di fun1 sono ereditate automaticamente dalla funzione "figlia" fun2. Queste variabili, tuttavia, possono essere mascherate nel modo descritto in precedenza creando delle variabili con lo stesso nome all'interno della funzione fun2.