Variabili Globali

Una variabile globale ha un nome che comincia per $. prima del nome e si può rifersi ad essa dovunque nel programma. Prima di essere inizializzata, la variabile globale ha uno valore speciale, nil.

ruby> $foo
   nil
ruby> $foo = 5
   5
ruby> $foo
   5

Le variabili globali dovrebbero essere usate con parsimonia. Sono pericolose poiché possono venire scritte da qualsiasi partedel codice. L'abuso di variabili globali può rendere difficile isolare i bug ; inoltre tende a indicare che il progetto di un programma non è stato pensato attentamente . Se doveste trovare necessario l'uso di una variabile globale, assicuratevi di darle un nome descrittivo che non venga usato inavvertitamente da qualcos'altro in seguito (chiamarla con qualcosa come $foo cpome sopra probabilmente è una pessima idea ).

Una caratteristica simpatica delle variabili globali è che possono essere tracciate; potete specificare una procedura che sia invocata quando il valore della variabile venga cambiato .

ruby> trace_var :$x, proc{print "$x adesso vale " , $x, ""}
   nil
ruby> $x = 5
$x adesso vale 5
   5

Quando una variabile globale è stata attrezzata in maniera da invocare una procedura quando viene cambiata , viene detta variabile attiva. Ad esempio, è utile per mantenere il display di una GUI aggiornato.

c'è una collezione di variabili speciali i cui nomi corrispondono in un segno di dollaro ($) seguito da un carattere singolo . Ad esempio, $$ contiene il numero identificativo del processo dell'interprete ruby, ed è read-only. Di seguito ci sono le variabili principali di sistema ed i loro significati:

$! ultimo messaggio d'errorelatest error message
$@ posizione dell'errore
$_ ultima stringa letta da gets
$. numero dell'ultima linea letta dall'inteprete
$& ultima stringa riscontrata da una regexp
$~ l'ultimo riscontro di una regexp, come array di sottoespressioni
$n l' n-esima sottoespressione nell'ultimo match (lo stesso che $~[n])
$= flag di case-insensitivity (sensibilità alla differenza tra maiuscole/minuscole)
$/ separatore degli input record
$ Separatore degli output record
$0 Il nome del file dello script ruby
$* Gli argomenti da riga di comando
$$ Il PID dell'interprete
$? Stato di uscita dell'ultimo processo figlio eseguito

Nella lista precedente, $_ e $~ hanno visibilità locale. I loro nomi suggeriscono che dovrebbero essere globali, ma sono molto più utili in questo modo , e ci sono ragioni storiche per usare questi nomi .

Ti potrebbe interessare anche

commenta la notizia

C'è 1 commento
Pier Paolo
Condividi le tue opinioni su questo articolo!