.

Precedent Tabelă de materii Următor
Înțelegerea variabilelor Ruby Ruby Number Classes and Conversions

Achiziționați și descărcați edițiile complete în format PDF și ePub ale acestei cărți electronice Ruby pentru numai 8 dolari.99

Acum că am acoperit elementele de bază ale variabilelor în Ruby, următoarea sarcină este să explicăm domeniul de aplicare al variabilelor Ruby.

Contenit

Ce este sfera de cuprindere a variabilelor?

Scopul de cuprindere definește locul dintr-un program în care o variabilă este accesibilă. Ruby are patru tipuri de domeniu de variabilă, local, global, instanță și clasă. În plus, Ruby are un tip de constantă. Fiecare tip de variabilă este declarat prin utilizarea unui caracter special la începutul numelui variabilei, așa cum este prezentat în tabelul următor.

.

Numele începe cu Scopul variabilei
$ O variabilă globală
@ O variabilă de instanță
sau _ O variabilă locală
O constantă
@@ O variabilă de clasă

În plus, Ruby are două pseudo-variabile cărora nu li se pot atribui valori. Acestea sunt nil, care este atribuită variabilelor neinițializate și self, care se referă la obiectul în curs de execuție. În restul acestui capitol vom analiza pe rând fiecare dintre aceste domenii de variabilă.

Ezoicreportați acest anunț

Detectarea domeniului de aplicare al unei variabile Ruby

Evident, puteți spune domeniul de aplicare al unei variabile uitându-vă la nume. Uneori, însă, trebuie să aflați domeniul de aplicare în mod programatic. O tehnică utilă pentru a afla domeniul de cuprindere al unei variabile este utilizarea metodei defined? defined? va returna domeniul de cuprindere al variabilei la care se face referire, sau nil dacă variabila nu este definită în contextul curent:

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

Variabile locale Ruby

Variabilele locale sunt locale pentru construcția de cod în care sunt declarate. De exemplu, o variabilă locală declarată într-o metodă sau în cadrul unei bucle nu poate fi accesată în afara acelei bucle sau metode. Numele variabilelor locale trebuie să înceapă fie cu un semn de subliniere, fie cu o literă minusculă. De exemplu:

loopcounter = 10_LoopCounter = 20

Variabile globale în Ruby

Variabilele globale în Ruby sunt accesibile din orice punct al programului Ruby, indiferent de locul în care sunt declarate. Numele variabilelor globale sunt prefixate cu un semn de dolar ($). De exemplu:

$welcome = "Welcome to Ruby Essentials"

Utilizarea variabilelor globale este puternic descurajată. Problema cu variabilele globale este că, nu numai că sunt vizibile oriunde în codul unui program, dar ele pot fi, de asemenea, modificate din orice punct al aplicației. Acest lucru poate îngreuna urmărirea erorilor.

Este util să știți, totuși, că un număr de variabile globale predefinite vă sunt disponibile, în calitate de dezvoltator Ruby, pentru a obține informații despre mediul Ruby. Un scurt rezumat al fiecăreia dintre aceste variabile este cuprins în tabelul următor.

.

Numele variabilei Valoarea variabilei
Locația ultimei erori
$_ Șirul citit ultima dată de gets
$. Numărul liniei citite ultima dată de interpret
$& Șirul la care a corespuns ultima dată regexp
$~ Ultima potrivire regexp, ca o matrice de subexpresii
$n A n-a subexpresie din ultima potrivire (la fel ca $~)
$= Cazul în care-insensibilitate la majuscule și minuscule
$/ Separatorul înregistrării de intrare
$\ Înregistrarea de ieșire separator
Numele fișierului de script ruby care se execută în prezent
$* The argumentele liniei de comandă utilizate pentru a invoca scriptul
$$ ID-ul de proces al interpretului Ruby
$? Starea de ieșire a ultimului proces copil executat

De exemplu, putem executa metoda gets pentru a prelua date de la tastatură, și apoi să facem referire la variabila $_ pentru a prelua valoarea introdusă:

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

Alternativ, am putea găsi ID-ul de proces al interpretului Ruby:

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

Variabile de clasă Ruby

O variabilă de clasă este o variabilă care este partajată între toate instanțele unei clase. Aceasta înseamnă că există o singură valoare a variabilei pentru toate obiectele instanțiate din această clasă. Acest lucru înseamnă că dacă o instanță a unui obiect schimbă valoarea variabilei, acea nouă valoare se va schimba, în esență, pentru toate celelalte instanțe ale obiectului.

O altă modalitate de a gândi variabilele de clasă este ca variabile globale în contextul unei singure clase.

Variabilele de clasă sunt declarate prin prefixarea numelui variabilei cu două caractere @ (@@). Variabilele de clasă trebuie să fie inițializate în momentul creării. De exemplu:

@@total = 0

Variabile de instanță Ruby

Variabilele de instanță sunt similare variabilelor de clasă, cu excepția faptului că valorile lor sunt locale pentru anumite instanțe ale unui obiect. De exemplu, dacă o clasă conține o variabilă de instanță numită @total, dacă o instanță a obiectului modifică valoarea curentă a lui @total, modificarea este locală doar pentru obiectul care a făcut modificarea. Alte obiecte din aceeași clasă au propriile lor copii locale ale variabilei care sunt independente de modificările făcute în orice alt obiect.

Variabilele de instanță sunt declarate în Ruby prin prefixarea numelui variabilei cu un singur semn @:

@total = 10

Ruby Constant Scope

Constantele Ruby sunt valori care, odată ce li se atribuie o valoare, nu trebuie modificate. Spun ar trebui pentru că Ruby diferă de majoritatea limbajelor de programare prin faptul că permite ca valoarea unei constante să fie modificată după ce a fost declarată, deși interpretul va protesta ușor cu un mesaj de avertizare.

Constantele declarate în cadrul unei clase sau al unui modul sunt disponibile oriunde în contextul acelei clase sau acelui modul. Constantele declarate în afara unei clase sau a unui modul au domeniu de aplicare global.

Cumpărați și descărcați edițiile complete în format PDF și ePub ale acestei cărți electronice Ruby pentru numai 8 dolari.99

.

Precedent Carte de materii Succesor Carte de materii Succesor
Înțelegerea variabilelor Ruby Clasi și conversii de numere Ruby

Lasă un răspuns

Adresa ta de email nu va fi publicată.