E-learn.ro
Panou utilizatori
Utilizator Parola
Creeaza cont nou    Recupereaza parola
Login
Newsletter
Introdu adresa ta de email
Inscrie-te
Inchide panoul de utilizatori
Add to Google

Tutoriale Ruby on Rails

Descarca toolbar

Toolbar E-learn.ro Facebook Twitter

WEB DEVELOPMENT  /  Ruby on Rails  /  Limbajul Ruby (2)

Colectii de date in Ruby (Partea I)

05.11.2009
Colectii de date in Ruby (Partea I)

Este minunat sa poti lucra cu datele in forma lor elementara, dar toti stiu ca partea amuzanta se afla in cadrul colectiilor. In acest tutorial vei putea citi despre primele doua tipuri de colectii din Ruby - intervalul si array-ul si vei vedea cum poti lucra cu acestea.

Total vizualizari: 4502 4502 afisari   |   Comentarii  0   |   Rating   |   (5 voturi)   |   Timp necesar: 30 min 30 min   |   Nivel de cunostiinte necesar: Incepator  Incepator

Sursa:  Mr. Neighborly's Humble Little Ruby Book  
Autor:  Jeremy McAnally
Adauga la tutoriale favorit Adauga la tutoriale favorite
Pagina:
« 1 2
comenteaza printeaza

Multe obiecte implementeaza aceasta metoda deoarece reprezinta un mod convenabil de a obtine o structura de date usor de manipulat din clase cu care este dificil de lucrat. Poti trage cu ochiul la documentatia Ruby API pentru a vedea daca obiectul pentru care vrei sa apelezi aceasta metoda o are implementata.

Acum, avand un array, poate ca doresti sa-i adaugi elemente. Elementele pot fi usor adaugate intr-un vector prin atribuirea unei valori unui indice non-existent; de exemplu:

array_din_interval[10] = 11
-> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
array_din_interval[12] = 12
-> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, nil, 12]

In cazul in care exista un decalaj intre indicii ultimului element din array si intre cel mai nou element, Ruby plaseaza valoarea nil (adica echivalentul lui null in alte limbaje de programare) in elementele ce nu au fost initializate (vezi array_din_interval[11] de mai sus). Daca vrei sa adaugi un element la capatul unui array, atunci poti utiliza operatorul <<, metoda push sau anumite forme ale metodei de inserare. De exemplu:

array_din_interval.push(15, 16)
-> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 15, 16]
array_din_interval.insert(-1, 17)
-> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 17] 
array_din_interval << 14
-> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 14]

Metoda push iti permite sa adaugi unul sau mai multe elemente la finalul unui array; fiecare element ar trebui sa fie furnizat ca parametru al metodei. Metoda insert iti permite sa introduci elemente la (indicele specificat + 1); in exemplu, am folosit -1 pentru a adauga elemente la sfarsitul array-ului (de ex. -1 muta un element de la capatul intervalului inapoi in ultima pozitie; adaugarea unui element dupa ultimul element l-ar adauga in mod efectiv la sfarsit). Probabil ca aceasta metoda nu este cea mai buna, dar poate fi utilizata in cazul in care aceeasi metoda trebuie sa introduca elemente in diverse locuri din array (inclusiv la sfarsit). Operatorul << iti permite sa impingi anumite elementele la capatul unui array; am pluralizat cuvantul element deoarece mai multe dintre aceste "adaugiri" pot fi legate impreuna pentru a adauga numeroase elemente la sfarsitul unui array. De exemplu:

array_din_interval << 20 << 21 << 22
-> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 21, 22]

Acum ca ai date in array-ul tau, ce poti face cu ele? Mie imi place sa-mi admir datele, sa ma mandresc cu capacitatea mea de a valorifica tot ceea ce reprezinta un array si sa-mi arunc pumnul in aer strigand: "Eu sunt Spartacus, stapanul array-ului!". Apoi, sotia mea se uita la mine si spune ca sunt nebun, devine ciudat, si ma intorc la munca. S-ar putea sa functioneze si in cazul tau; cei mai multi oameni opteaza insa pentru utilizarea array-urilor pentru a pastra niste elemente si pentru a le apela atunci cand au nevoie (insa nu este la fel de distractiv). Pentru a utiliza valoarea unui element dintr-un array, faci pur si simplu referire la elementul dorit cu ajutorul indexului sau astfel: nume_array[index]. De exemplu:

puts array_din_interval[0]
-> 1
index = 2
array_din_interval[index]
-> 3
array_din_interval[0..2]
-> [1, 2, 3]

Observa ca atunci cand te referi la elementele array-ului, te poti referi la un singur element cu un index numar intreg sau poti folosi un interval pentru a te referi la un numar de elemente. Aminteste-ti, deoarece indexarea array-ului incepe de la 0, indicele de referinta 0 se refera de fapt la primul element. De asemenea, asigura-te atunci cand introduci un index ca este un numar intreg sau un interval, daca nu, Ruby va returna TypeError (care iti va zdrobi sufletul). Aceasta pare a fi o problema stupida (si o consecinta si mai stupida!), dar ar putea aparea in cazul in care (pentru un motiv oarecare), ai fi citit indecsii dintr-un fisier (care interpreteaza orice valoare ca un sir de caractere, astfel incat va trebui sa le convertesti cu ajutorul metodei pe care o vei invata mai tarziu). Aceasta metoda de referire la elementele unui array functioneaza asemenea metodei at:

puts array_din_interval.at(0)
-> 1

O alta metoda, fetch, poate opera in mod similar, dar fetch poate preciza de asemenea o valoare implicita pentru a fi returnata in cazul in care indicele specificat nu este gasit.

puts array_din_interval.fetch(999, "Element inexistent!!")
-> Element inexistent!!

O alta metoda, values_at opereaza similar cu at, fetch si operatorul [], dar, spre deosebire de acestea, poate primi ca parametri o serie de indecsi pe care ii cauta in array, returnand elementele corespunzatoare sub forma unui vector.

puts array_din_interval.values_at(0, 1, 2)
-> [1, 2, 3]

Ultima modalitate pe care vreau sa o impartasesc pentru extragerea de elemente este reprezentata de metodele pop si shift. Metoda pop preia ultimul element din array si il elimina; metoda shift extrage primul element din vector si il elimina, mutand toate celelalte elemente inapoi cu un index.

array_din_interval.pop
-> [1, 2, 3, 4, 5, 6, 7, 8, 9]
array_din_interval.shift
-> [2, 3, 4, 5, 6, 7, 8, 9, 10]

Deci, acum ai un array, ai date in el, dar poate ca ai o problema cu acel al treilea element si vrei sa-l elimini. Din fericire, Ruby se poate ocupa de aceasta mica problema si sa spunem ca nu este amabil. Metoda delete_at sterge elementul de la indicele specificat ca parametru si returneaza valoarea acelui element. De exemplu:

puts array_din_interval.delete_at(1)
-> 2
array_din_interval
-> [1, 3, 4, 5, 6, 7, 8, 9, 10]

O alta metoda pe care array-urile o ofera pentru stergerea elementelor este metoda delete (ce surpriza, nu?). Aceasta metoda sterge si returneaza valoarea la care se face referire ca parametru, mai degraba decat un index ca delete_at. De exemplu:

puts array_din_interval.delete(4)
-> 4
array_din_interval
-> [1, 2, 3, 5, 6, 7, 8, 9, 10]
puts array_din_interval.delete(1337) { "Gresit!" }
-> Gresit!

Retine ca elementul cu valoarea de 4 a fost sters si nu indicele 4. De asemenea, retine ca metoda delete ofera optiunea returnarii unei valori "standard" daca valoarea specificata nu exista in array; ultimul exemplu este o demonstratie a acestei facilitati. Blocul de cod delimitat de acolade este returnat daca elementul nu este gasit (voi vorbi mai pe larg despre aceste tipuri de blocuri de cod mai tarziu).

Cam atat despre colectii. In urmatoarea parte a acestui tutorial vei putea citi despre dictionare sau Hash si despre utilizarea variabilelor in Ruby.

Pagina:
« 1 2
comenteaza printeaza

Cuvinte cheie:   ruby,   colectii,   date,   interval,   array,   index,   eql,   include,   pop,   shift,   values_at,   to_a,   fetch,   delete,   delete_at

Alte tutoriale Ruby on Rails:
Noteaza acest tutorial
Rating tutorial
 
(5 voturi)
Pentru a nota acest tutorial, trebuie sa fii logat!
Posteaza un comentariu
Pentru a posta un comentariu, trebuie sa fii logat!
0 TOP UTILIZATORI* 0 0
Tutoriale scrise de claibornelara
claibornelara Rang utilizator claibornelara - Incepator
4665
Tutoriale scrise de mcuemica
mcuemica Rang utilizator mcuemica - Incepator
4585
Tutoriale scrise de ellarichards
ellarichards Rang utilizator ellarichards - Incepator
4505
Tutoriale scrise de emonclercheap
emonclercheap Rang utilizator emonclercheap - Incepator
4405
Tutoriale scrise de beacherrosa
beacherrosa Rang utilizator beacherrosa - Incepator
4285
* Acest top reprezinta punctajele acumulate in ultimele 30 de zile.
XML Outlook Illustrator COREL DRAW HTML Python RoR SWF Action Script Dreamweaver Sony Vegas Bridge Fireworks Flash Fotografie Verilog CSS Ruby on Rails Java SEO Word PHP Vista StyleSheet Javascript XHTML Swift 3D Powerpoint PSD Gimp Lightroom Excel MySQL JSON Photoshop AJAX
Promovare:
Daca faci parte din comunitatea E-learn.ro si doresti promovarea acesteia, poti accesa pagina de promovare.
Arhiva newsletter:
Daca ai ratat un numar mai vechi, sau vrei sa revezi care au fost noutatile E-learn.ro la un moment dat, poti accesa arhiva de newslettere.
  Copyright © 2008-2013 E-LEARN.ro. Toate drepturile rezervate. Termeni si conditii.
Conceput si realizat de Neokinetics Software