Uno degli aspetti fondamentali quando si lavora con i numeri in Ruby è la distinzione tra i numeri interi (numeri senza cifre dopo il separatore decimale) e i numeri in virgola mobile (numeri con zero o più cifre dopo il separatore decimale).
Sono implementati tramite le classi Integer e Float.
a = 1
b = 1.0
a.class
#=> Integer
b.class
#=> Float
+, -, *, /).
I numeri si possono confrontare con i normali operatori di confronto.Integer restituiscono sempre un'istanza di Integer.Float restituiscono altre istanze di Float.Integer e istanze di Float restituiscono istanze di Float.Float e Integer hanno metodi che convertono i valori dall'una all'altra.
I numeri Integer sono precisi a un'unità intera, mentre Float ha una precisione frazionaria rispetto a un numero intero.
Questo significa che convertire un float in un intero può comportare una perdita di precisione.4.9.to_i
#=> 4
5.to_f
#=> 5.0
7 - 3.0
#=> 4.0
2 == 4
#=> false
1.0 == 1
#=> true
Un'istruzione if può essere usata per eseguire del codice in modo condizionale:
x = 5
if x == 5
# Execute logic if x equals 5
elsif x > 7
# Execute logic if x greater than 7
else
# Execute logic in all other cases
end
A volte vuoi eseguire un'istruzione (o più istruzioni) se una condizione non è vera. Per situazioni come questa, Ruby mette a disposizione la parola chiave unless:
x = 4
unless x == 5
# Execute logic if x does not equal 5
else
# Execute logic if x == 5
end
Se vuoi eseguire codice diverso a seconda del valore di una variabile, l'istruzione case di Ruby può tornarti utile:
y = 5
case y
when 3
# Execute logic if y equals 3
when 5
# Execute logic if y equals 5
else
# Execute logic in all other cases
end
A volte lo stesso problema si può risolvere con tipi diversi di istruzioni condizionali, e può capitare che una sia più adatta dell'altra. Quando usi una delle tre istruzioni condizionali, è buona cosa fermarsi un momento e considerare anche le altre due opzioni.