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)

Concepte si tipuri de date simple in Ruby

28.09.2009
Concepte si tipuri de date simple in Ruby

In acest tutorial vei putea citi cateva lucruri legate de sintaxa limbajului Ruby, in cea mai rapida modalitate care sa permita totusi instruirea completa cu privire la subiect.

Total vizualizari: 4786 4786 afisari   |   Comentarii  0   |   Rating   |   (3 voturi)   |   Timp necesar: 20 min 20 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

In acest tutorial vei putea citi cateva lucruri legate de sintaxa si lingvistica limbajului Ruby, in cea mai rapida modalitate care sa permita totusi instruirea completa cu privire la subiect. Daca te consideri a fi un guru Ruby sau urasti tutorialele dintr-un motiv sau altul, atunci sunt aproape convins ca nu vei citi ceea ce urmeaza.

Conceptele de baza Ruby

Ruby este un limbaj orientat pe obiecte, dar inainte de a sari peste aceasta sectiune deoarece crezi ca stii despre ce este vorba fiindca ai utilizat C++ sau orice alt limbaj orientat pe obiecte, te rog sa te linistesti si sa citesti cel putin urmatoarea propozitie. In Ruby, orice este un obiect. Orice. Chiar si rezultatele operatiunilor asupra respectivelor obiecte sunt tot obiecte; aceasta abordare difera de C++ sau Java, in care exista tipuri de date primitive sau unele instructiuni care nu returneaza o valoare.

Daca nu ai programat niciodata intr-un limbaj orientat pe obiecte, atunci este o alta poveste. In general, cand scrii cod Ruby sau orice cod orientat pe obiecte, ideea este sa creezi modele cu ajutorul carora sa poti implementa aplicatia. De exemplu, daca ai crea o aplicatie carte de bucate, probabil ca ai dori sa creezi o lista de retete.

Daca nu ai lucra cu obiecte, ar trebui sa utilizezi o serie de liste sau vectori, astfel incat sa poti retine diversele tipuri de retete si sa poti urmari pozitia fiecarei retete dintr-o lista.

Programarea orientata pe obiecte simplifica aceasta sarcina, permitand crearea de clase si obiecte cu ajutorul carora poti modela componentele necesare. Utilizand exemplul nostru, ai putea crea o clasa Reteta cu proprietatile nume, autor si un vector de ingrediente. Scopul unei clase este de a modela ceva in aplicatia ta; clasele creeaza "prototipul" pentru substantivele din programele tale: obiectele. Instantele clasei, sau obiectele (termenii sunt echivalenti), vor prelua acel prototip si il vor pune in actiune. In exemplul nostru, am putea crea obiecte sau instante ale clasei Reteta pentru fiecare reteta in parte. Fiecare obiect va putea detine informatii, executa actiuni aferente retetelor (de exemplu, sa adauge elemente noi in lista de ingrediente, etc.) si activa o serie de constrangeri care pot fi aplicate asupra unei retete normale (de exemplu, sa permita doar valori numerice pentru a exprima cantitatile de ingrediente, sa se asigure ca exista denumiri pentru retete, etc.).

Tipuri de date in Ruby

Desi in Ruby orice reprezinta un obiect, nu inseamna ca totul este generic (adica nu exista functionalitati specifice) sau ca nu exista clase built-in. Ruby iti pune la dispozitie o serie de clase predefinite pe baza carora se pot construi toate componentele unei aplicatii. Aceste tipuri difera de cele din alte limbaje de programare deoarece sunt generate din aceeasi clasa: clasa Object. Aceasta ierarhie simbolizeaza ca exista un singur tip de "baza", si nu un numar de tipuri primitive ca in alte limbaje cum ar fi C sau Java. In continuare, vom analiza aceste tipuri si avantajele pe care ele le ofera programatorilor.

Tipul String

Primul tip este reprezentat de sirurile de caractere sau string. Acestea sunt de fapt secvente de octeti ce compun o secventa de caractere. Acest tip de date poate fi initializat in mai multe moduri, dar cel mai comun dintre acestea este prin utilizarea unui string literal. Un string literal este un sir de caractere constant, creat prin includerea sa intre apostrofi sau ghilimele. De exemplu:

 
puts 'Hello, Darling.' -> Hello, Darling.
puts 'What's up?' -> What's up?
puts "AtTab." -> A tab.

Asteapta! Ce reprezinta acele backslash-uri? Acelea sunt secvente escape, adica un backslash urmat de un caracter pentru a crea caractere neprintabile in mod normal (de ex. in acest exemplu am utilizat t pentru a defini un caracter tab, dar poti utiliza si altele pentru a crea linii noi si taburi verticale). Am spus neprintabile deoarece in celalalt exemplu am utilizat ' pentru a crea un apostrof. In mod normal, acest caracter nu ar fi afisat deoarece este continut intr-un set de apostrofi, ceea ce inseamna ca daca nu punem backslash, el va inchide sirul de caractere, cauzand o eroare.

Acum, daca ai observat, am utilizat apostrofi pentru unele string-uri si ghilimele pentru altele. Exista o diferenta intre cele doua notatii. String-urile cuprinse intre apostrofi permit un set limitat de secvente escape (de fapt sunt acceptate doar caracterele apostrof si backslash) si sunt inutile in afara cazului in care esti preocupat de performanta (si transformarea string-urilor cu ghilimele in string-uri cu apostrofi ar fi ultimul lucru de efectuat cand incerci sa iti optimizezi aplicatia). Pe de alta parte, sirurile de caractere cuprinse intre ghilimele ofera functionalitati sporite, permitand mai multe secvente escape. Dupa cum ai putea vedea in exemplu de mai sus, putem utiliza n pentru a crea un caracter linie noua, t pentru a crea un caracter tab si asa mai departe. In continuare, poti vedea un tabel al tuturor secventelor escape disponibile pentru utilizarea cu string-uri delimitate de ghilimele (sunt cateva).

Secvente Escape
a Sonerie
??? Numar octal
x?? Numar hexazecimal
#{???} Valoarea ???, unde ??? este o expresie Ruby
e Escape
c?
C-?
Control-?
M-? Meta
M-C-? Meta-Control-?
f Feed form
n Linie noua
f Return
s Spatiu
t Tab
w Tab vertical
b Backspace

Privind tabelul, poti observa ca string-urile cu ghilimele prezinta o alta caracteristica interesanta: interpolarea expresiilor. Suna grozav, dar in realitate inseamna doar ca poti insera valoarea portiunilor de cod Ruby direct intr-un sir de caractere. Aminteste-ti ca in Ruby totul reprezinta un obiect, chiar si rezultatele expresiilor sunt tot obiecte. Aceasta inseamna ca poti scrie urmatoarele instructiuni:

 
"Inches/yard: #{12*3}" -> Inches/yard: 36
"#{"Tora! "*3}" -> Tora! Tora! Tora!

Cel de-al doilea exemplu este confuz, daca nu iti amintesti ca totul reprezinta un obiect in Ruby (da, chiar si un string literal, apartine clasei String.). Deoarece un string literal creeaza un obiect String, poti actiona asupra lui exact ca in cazul oricarui alt obiect. In acest caz, multiplicarea unui string cu 3 efectueaza pur si simplu ceea ce te-ai astepta: face trei copii ale stringului.

Un alt mod mai putin grozav de creare a string-urilor il reprezinta utilizarea unui delimitator special: %Q sau %q. Acest constructor functioneaza prin amplasarea dupa %Q sau %q a unui caracter non-alfanumeric, pe un singur octet. De exemplu:

 
%q{Hoagies & grinders!} -> Hoagies and grinders!
%Qs#{"Navy beans! "*3}s -> Navy beans! Navy beans! Navy beans!

Observa ca %q actioneaza ca un string delimitat de apostrofi, iar %Q actioneaza ca un string cu ghilimele. Asociaza-le dupa dimensiune: q mic , apostrof, si Q mare, ghilimele.

Un alt mod de creare a string-urilor in Ruby este reprezentat de nefericitele constructii lingvistice ce creeaza un string prin specificarea unui delimitator dupa un set de caractere <<. De exemplu:

 
my_string = <<MY_STRING
This is a simple string that is 
pre-formatted, which means that the 
way it is formatted here including 
tabs and newlines will be duplicated
when I print it out.
MY_STRING

Ultima modalitate care poate fi utilizata pentru a crea o instanta string este de a apela pur si simplu metoda to_s a unui obiect. Majoritatea obiectelor vor returna o valoare standard (de ex. denumirea clasei si id-ul instantei sau ceva similar), dar altele ofera mai multe avantaje. De exemplu, Fixnum va returna un sir de caractere ce contine o valoare numerica.

Pagina:
1 2 »
comenteaza printeaza

Cuvinte cheie:   ruby,   obiect,   tipuri date,   operatori,   String,   Fixnum,   Bignum,   Float

Alte tutoriale Ruby on Rails:
Noteaza acest tutorial
Rating tutorial
 
(3 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
4650
Tutoriale scrise de mcuemica
mcuemica Rang utilizator mcuemica - Incepator
4575
Tutoriale scrise de ellarichards
ellarichards Rang utilizator ellarichards - Incepator
4500
Tutoriale scrise de emonclercheap
emonclercheap Rang utilizator emonclercheap - Incepator
4395
Tutoriale scrise de beacherrosa
beacherrosa Rang utilizator beacherrosa - Incepator
4270
* Acest top reprezinta punctajele acumulate in ultimele 30 de zile.
Javascript Excel Vista Bridge COREL DRAW Gimp Swift 3D XML Dreamweaver Fireworks Powerpoint Lightroom AJAX Java Ruby on Rails XHTML CSS Sony Vegas MySQL Action Script Python StyleSheet PHP Word JSON HTML RoR Flash Photoshop SWF SEO Outlook PSD Verilog Fotografie Illustrator
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