Precedente Tabella del contenuto Successivo
Comprensione delle variabili Ruby Classi di numeri e conversioni Ruby

Acquista e scarica le edizioni complete PDF ed ePub di questo eBook Ruby per soli $8.99

Ora che abbiamo coperto le basi delle variabili in Ruby, il prossimo compito è quello di spiegare lo scopo delle variabili Ruby.

Contenuti

Che cos’è lo scope di una variabile?

Lo scope definisce dove una variabile è accessibile in un programma. Ruby ha quattro tipi di scope per le variabili: locale, globale, istanza e classe. Inoltre, Ruby ha un tipo di costante. Ogni tipo di variabile è dichiarato utilizzando un carattere speciale all’inizio del nome della variabile, come indicato nella tabella seguente.

Nome inizia con Scopo della variabile
$ Una variabile globale
@ Una variabile di istanza
o _ Una variabile locale
Una costante
@@ Una variabile di classe

Inoltre, Ruby ha due pseudo-variabili a cui non possono essere assegnati valori. Queste sono nil che viene assegnata alle variabili non inizializzate e self che si riferisce all’oggetto in esecuzione. Nel resto di questo capitolo esamineremo ciascuno di questi scopi delle variabili a turno.

Ezoicriporta questo annuncio

Rilevare lo scopo di una variabile Ruby

Ovviamente, puoi capire lo scopo di una variabile guardando il nome. A volte, tuttavia, è necessario scoprire lo scopo programmaticamente. Una tecnica utile per scoprire lo scopo di una variabile è usare il metodo defined?. defined? restituirà lo scopo della variabile a cui si fa riferimento, o nil se la variabile non è definita nel contesto corrente:

x = 10=> 10defined? x=> "local-variable"$x = 10=> 10defined? $x=> "global-variable"

Variabili locali Ruby

Le variabili locali sono locali al costrutto di codice in cui sono dichiarate. Per esempio, una variabile locale dichiarata in un metodo o all’interno di un ciclo non è accessibile al di fuori di quel ciclo o metodo. I nomi delle variabili locali devono iniziare con un trattino basso o una lettera minuscola. Per esempio:

loopcounter = 10_LoopCounter = 20

Variabili globali in Ruby

Le variabili globali in Ruby sono accessibili da qualsiasi punto del programma Ruby, indipendentemente da dove sono dichiarate. I nomi delle variabili globali sono preceduti dal simbolo del dollaro ($). Per esempio:

$welcome = "Welcome to Ruby Essentials"

L’uso delle variabili globali è fortemente sconsigliato. Il problema con le variabili globali è che, non solo sono visibili ovunque nel codice di un programma, ma possono anche essere cambiate da qualsiasi punto dell’applicazione. Questo può rendere difficile il tracciamento dei bug.

È utile sapere, comunque, che un certo numero di variabili globali predefinite sono a tua disposizione come sviluppatore Ruby per ottenere informazioni sull’ambiente Ruby. Un breve riassunto di ciascuna di queste variabili è contenuto nella seguente tabella.

Nome della variabile Valore della variabile
La posizione dell’ultimo errore
$_ La stringa letta per ultima gets
$. Il numero di linea letto per ultimo dall’interprete
$& L’ultima stringa trovata da regexp
$~ L’ultima corrispondenza regexp, come array di sottoespressioni
$n L’ennesima sottoespressione nell’ultima corrispondenza (come $~)
$= Il flag di insensibilità al caso
$/ Il separatore di record in ingresso
$\ Il separatore di record in uscita
Il nome del file di script ruby attualmente in esecuzione
$* Gli gli argomenti della riga di comando usati per invocare lo script
$$ L’ID del processo dell’interprete Ruby
$? Lo stato di uscita dell’ultimo processo figlio eseguito

Per esempio possiamo eseguire il metodo gets per prendere input dalla tastiera, e poi fare riferimento alla variabile $_ per recuperare il valore inserito:

irb(main):005:0> getshello=> "hello\n"irb(main):006:0> $_=> "hello\n"

In alternativa potremmo trovare l’ID del processo dell’interprete Ruby:

irb(main):007:0> $$=> 17403

Variabili di classe Ruby

Una variabile di classe è una variabile condivisa tra tutte le istanze di una classe. Questo significa che solo un valore di variabile esiste per tutti gli oggetti istanziati da questa classe. Questo significa che se un’istanza dell’oggetto cambia il valore della variabile, quel nuovo valore cambierà essenzialmente per tutte le altre istanze dell’oggetto.

Un altro modo di pensare alle variabili di classe è come variabili globali nel contesto di una singola classe.

Le variabili di classe sono dichiarate facendo precedere il nome della variabile da due caratteri @ (@@). Le variabili di classe devono essere inizializzate al momento della creazione. Per esempio:

@@total = 0

Variabili di istanza Ruby

Le variabili di istanza sono simili alle variabili di classe, tranne che i loro valori sono locali a specifiche istanze di un oggetto. Per esempio, se una classe contiene una variabile di istanza chiamata @totale, se un’istanza dell’oggetto cambia il valore corrente di @totale, il cambiamento è locale solo all’oggetto che ha fatto il cambiamento. Altri oggetti della stessa classe hanno le loro copie locali della variabile che sono indipendenti dai cambiamenti fatti in qualsiasi altro oggetto.

Le variabili di istanza sono dichiarate in Ruby facendo precedere il nome della variabile da un singolo segno @:

@total = 10

Scopo della costante Ruby

Le costanti Ruby sono valori che, una volta assegnato un valore, non dovrebbero essere cambiati. Dico dovrebbero perché Ruby differisce dalla maggior parte dei linguaggi di programmazione in quanto permette di cambiare il valore di una costante dopo che è stata dichiarata, anche se l’interprete protesterà leggermente con un messaggio di avvertimento.

Le costanti dichiarate all’interno di una classe o modulo sono disponibili ovunque nel contesto di quella classe o modulo. Alle costanti dichiarate al di fuori di una classe o di un modulo è assegnato uno scopo globale.

Acquista e scarica le edizioni complete PDF ed ePub di questo eBook su Ruby per soli $8.99

Precedente Tabella dei contenuti Prossimo
Comprensione delle variabili Ruby Classi di numeri Ruby e conversioni

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.