Iniziamo a vedere i tipi fondamentali di ogni linguaggio: i numeri e le stringhe. Queste ultime le analizzeremo nella prossima lezione.
Il linguaggio Ruby prevede l'esistenza di numeri interi e di numeri a virgola mobile (floating-point). I primi sono oggetti delle classi Fixnum o Bignum mentre i secondi sono di tipo Float. I numeri che possono essere rappresentati in una word (meno un bit) sono oggetti della classe Fixnum, quelli che vanno oltre questo limite sono invece istanze della classe Bignum:
f = 123 f.class => Fixnum b = 1234567890 b.class => Bignum
Per rappresentare numeri non decimali va fatto precedere al numero vero e proprio un indicatore di base (0b per i binari, 0 per gli ottali, 0d per i decimali e 0x per gli esadecimali), ad esempio:
> 10 # i numeri decimali sono preceduti da 0d che però può essere omesso => 10 > 010 # i numeri ottali sono preceduti da uno 0 => 8 > 0x10 # i numeri esadecimali sono preceduti da 0x => 16 > 0b10 # i numeri binari sono preceduti da 0b => 2
Essendo i numeri oggetti di una determinata classe possiamo applicare ad essi i metodi previsti dalle rispettive classi. I principali metodi previsti da Fixnum e Bignum sono:
- operazioni aritmetiche di base (+, -, *, /, div, %, modulo, **, - unario)
- operazioni sui bit (~, |, &, ^, <<, >>)
- altre operazioni aritmetiche:
- valore assoluto (abs):
-123.abs -> 123 - dimensione in byte (size):
100.size -> 4 - operazioni di conversione (to_f, to_s, to_sym):
1.to_s -> "1",1.to_f -> 1.0
- valore assoluto (abs):
Altri metodi sono ereditati dalle classi Integer e Numeric poiché entrambe le classi derivano da Integer che a sua volta deriva da Numeric. Abbiamo ad esempio chr, floor, next, to_i, step e molti altri.
La classe Float oltre ai metodi base visti per Fixnum e a quelli ereditati da Numeric prevede tra l'altro:
infinite?che restituisce -1, +1 o nil a seconda che il valore sia pari a meno infinito, più infinito o un numero finito:(1.0).infinite? -> nil,(+1.0/0.0).infinite? -> 1nan?restituisce true se il valore è un numero non valido secondo gli standard IEEE.
Per ulteriori dettagli su questi e altri metodi consiglio vivamente l'uso di ri sulle classi Fixnum, Bignum, Integer e Numeric.
Se vuoi aggiornamenti su Development inserisci la tua email nel box qui sotto: