Tipuri numerice
Al doilea tip este reprezentat de clasele predefinite pentru numere: Fixnum si Bignum. Cand cream un obiect numeric, orice valoare intreaga din intervalul (-230,230 - 1) este atribuita unui obiect Fixnum, iar orice alt numar ce se afla in afara acestei arii este atribuit unei instante de tip Bignum; Ruby efectueaza aceasta operatie in mod transparent, asa ca nu trebuie sa te preocupe ce tip de date sa utilizezi.
Numerele intregi sunt create prin tastarea valorii respective fara ghilimele (altfel devin siruri de caractere).
In plus, Ruby lucreaza cu formate diferite in functie de baza numerica pe care intentionezi sa o utilizezi. Astfel, Ruby suporta operatii cu numere zecimale (baza-10), dar si operatii cu numere octale (baza-8), hexazecimale (baza-16) si binare (baza-2). De exemplu:
-123456789 -> -123456789
0d123456789 -> 1234567890
1234323424231 -> 1234323424231
0x5C1 -> 1473
01411 -> 777
1_90_33 -> 19033
Observa ca Ruby ignora caracterele underscore din numere (Unele persoane aleg sa le utilizeze in loc de virgule pentru numere mai mari pentru a accentua lizibilitatea). Exemplele mai prezinta si notatiile diverselor baze. Pentru a crea un numar binar (baza-2), scrie ob inaintea numarului; pentru a crea un numar octal (baza-8), scrie 0 inaintea numarului; pentru a crea un numar hexazecimal (baza-16), scrie 0x inaintea numarului. Pentru a crea un intreg standard in baza-10, fie pur si simplu tastezi numarul in mod normal (de ex. 1678), sau scrii od inaintea sa (ex. 0d1678).
Pe langa numere intregi, Ruby mai suporta tipul Float pentru numere rationale. De exemplu:
1.5 -> 1.5
1.0e5 -> 100000.0
1.e5 -> !NoMethodError
Fiecare latura a punctului zecimal trebuie sa contina un numar. Cand scrii numere rationale in notatie stiintifica, trebuie sa plasezi un 0 langa punctual zecimal, altfel Ruby va incerca sa execute o metoda denumita (de exemplu) e5 din clasa Fixnum.
Deoarece numerele sunt obiecte (totul este un obiect in Ruby), mai contin si metode care pot actiona asupra lor. Poti obtine dimensiunea unui numar cu metoda size, poti converti un numar in string utilizand metoda to_s si multe altele:
-4.abs -> 4
6.zero? -> false
Metodele de mai sus sunt denumite in mod evident (metoda abs obtine valoarea absoluta si zero? returneaza true daca numarul este zero), dar nu sunt singurele metode oferite. Verifica documentatia Ruby API pentru mai multe informatii.
Numerele mai ofera si metode care nu par a fi metode la prima vedere: operatorii aritmetici. Iata cateva exemple:
2 + 2 -> 4
6 / 3 -> 2
-4 * 2 -> -8
O lista completa a acestor operatori si functiile lor este disponibila mai jos. Un sfat rapid: daca ai programat vreodata in alte limbaje, retine ca operatorii din Ruby functioneaza similar (doar daca nu ai programat intr-un limbaj traznit non-matematic).
| Operatori aritmetici |
| + |
Adunare |
| - |
Scadere |
| + |
Adunare |
| / |
Impartire |
| * |
Inmultire |
| () |
Ordinea operatiilor (de ex. expresii de grupare pentru a forta o anumita ordine a operatiilor) |
| % |
Restul impartirii |
|
|