Один із ключових аспектів роботи з числами в Ruby - розрізнення між цілими числами (числами без цифр після десяткового розділювача) та числами з плаваючою комою (числами з нулем або більше цифр після десяткового розділювача).
Вони реалізовані через класи Integer та Float.
a = 1
b = 1.0
a.class
#=> Integer
b.class
#=> Float
+, -, *, /).
Числа можна порівнювати за допомогою стандартних операторів порівняння.Integer завжди дають примірник Integer.Float дають інші примірники Float.Integer та примірниками Float дають примірники Float.Float та Integer мають методи, які приводять значення одного типу до іншого.
Цілі числа точні в межах цілої одиниці, тоді як точність Float є дробовою щодо цілого числа.
Це означає, що приведення числа з плаваючою комою до цілого може призвести до втрати точності.4.9.to_i
#=> 4
5.to_f
#=> 5.0
7 - 3.0
#=> 4.0
2 == 4
#=> false
1.0 == 1
#=> true
Умовну конструкцію if можна використати, щоб виконати код лише за певної умови:
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
Іноді потрібно виконати інструкцію (чи кілька інструкцій), якщо умова не виконується. Для таких випадків Ruby має ключове слово unless:
x = 4
unless x == 5
# Execute logic if x does not equal 5
else
# Execute logic if x == 5
end
Якщо потрібно виконати різний код залежно від значення змінної, стане в пригоді конструкція case у Ruby:
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
Ту саму задачу іноді можна вирішити різними типами умовних конструкцій, і часом одна з них підходить краще за іншу. Використовуючи будь-яку з трьох умовних конструкцій, варто на мить зупинитися і розглянути також два інші варіанти.