Um dos aspetos fundamentais de trabalhar com números em Ruby é a distinção entre números inteiros (números sem algarismos depois do separador decimal) e números de vírgula flutuante (números com zero ou mais algarismos depois do separador decimal).
Estes são implementados através das classes Integer e Float.
a = 1
b = 1.0
a.class
#=> Integer
b.class
#=> Float
+, -, *, /).
Os números podem ser comparados com os operadores de comparação habituais.Integer resultam sempre numa instância de Integer.Float resultam noutras instâncias de Float.Integer e instâncias de Float resultam em instâncias de Float.Float e Integer têm métodos que convertem valores de uma para a outra.
Os números Integer são exatos até à unidade, enquanto os Float têm uma precisão fracionária em relação a um número inteiro.
Isto significa que converter um número de vírgula flutuante num inteiro pode causar perda de precisão.4.9.to_i
#=> 4
5.to_f
#=> 5.0
7 - 3.0
#=> 4.0
2 == 4
#=> false
1.0 == 1
#=> true
Uma condicional if pode ser usada para executar código condicionalmente:
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
Às vezes queres executar uma instrução (ou instruções) se uma condição não for verdadeira. Para situações assim, o Ruby implementa a palavra-chave unless:
x = 4
unless x == 5
# Execute logic if x does not equal 5
else
# Execute logic if x == 5
end
Se quiseres executar código diferente consoante o valor de uma variável, a instrução case do Ruby pode ser útil:
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
O mesmo problema pode, por vezes, ser resolvido com diferentes tipos de condicionais; por vezes, uma adequa-se melhor ao problema do que a outra. Quando usares uma destas três condicionais, é boa ideia parar um momento e considerar também as outras duas opções.