У Ruby є так звані вирази керування потоком виконання: вони визначають, як виконуватиметься програма, і набувають правдивого або неправдивого значення. Існують оператори, за допомогою яких можна отримати правдиві або неправдиві значення, їх називають операторами порівняння.
Є два основні керівні вирази, які визначають, який код виконається, а який ні. Інакше кажучи, яка саме гілка виконається.
Це if і вираз unless.
Оператори порівняння використовують, щоб порівнювати значення й повертати значення true або false.
Наведені нижче оператори вимагають, щоб обидва порівнювані значення були одного типу.
Якщо типи значень різняться, компілятор видасть помилку.
Ось список операторів і приклади, коли вони повертають true:
| Метод | Опис | Приклад |
|---|---|---|
| < | менше ніж | 4 < 5 |
| <= | менше або дорівнює | 4 <= 4 |
| > | більше ніж | 3 > 1 |
| >= | більше або дорівнює | 2 >= 2 |
Оператори рівності та нерівності, на відміну від щойно згаданих, можна застосовувати до значень будь-якого типу.
Оператор == перевіряє, чи два значення рівні, і це включає також перевірку типу значення.
Оператор != працює так само, але повертає true, якщо значення не рівні, і false, якщо вони рівні.
Ось список операторів рівності й нерівності та приклади, коли вони повертають true:
| Метод | Опис | Приклад |
|---|---|---|
| == | дорівнює | 4 == 4 |
| != | не дорівнює | 5 != 4 |
Комбінований оператор порівняння (його ще називають оператором «космічний корабель») - це особливий оператор порівняння.
Він особливий тим, що повертає не правдиве чи неправдиве значення, а число.
Його записують як <=> і використовують для порівняння двох значень.
Він повертає 1, якщо ліве значення більше за праве, -1, якщо ліве значення менше за праве, і 0, якщо значення рівні.
1 <=> 2 # => -1
2 <=> 2 # => 0
3 <=> 2 # => 1
if
Конструкцію if використовують, щоб перевірити, чи задана умова «правдива» або «неправдива».
Якщо умова правдива, виконається код усередині конструкції if.
Конструкція if завершується ключовим словом end.
value = 1
if value == 1
"1 is equal to 1"
end
# => "1 is equal to 1"
if value > 2
"1 is greater than 2"
end
# => nil
unless
Конструкція unless працює дуже схоже на конструкцію if, але виконує код усередині конструкції unless, якщо умова неправдива.
value = 1
unless value == 1
"1 is not equal to 1"
end
# => nil
unless value > 2
"1 is not greater than 2"
end
# => "1 is not greater than 2"
else
Конструкцію else можна використовувати разом із конструкцією if.
Конструкція else виконається, якщо гілка if не виконалася.
value = 1
if value == 1
"1 is equal to 1"
else
"1 is not equal to 1"
end
# => "1 is equal to 1"
if value > 2
"1 is greater than 2"
else
"1 is not greater than 2"
end
# => "1 is not greater than 2"
if
Конструкцію elsif можна використовувати разом із конструкцією if.
Конструкція elsif виконається, якщо гілка if не виконалася, а умова конструкції elsif правдива.
Конструкції elsif можна зчіплювати в ланцюжок, і виконається перша правдива умова.
Наприкінці конструкції if може бути також конструкція else, яка виконається, якщо жодна з попередніх умов не була правдивою.
value = 1
if value == 0
"1 is equal to 0"
elsif value > 2
"1 is greater than 2"
else
"1 is not equal to 0 and 1 is not greater than 2"
end
# => "1 is not equal to 0 and 1 is not greater than 2"
if і unless як суфіксКонструкції if і unless можна також використовувати як [суфікс][if-as-suffix]; це зручно, коли потрібно виконати один рядок коду за певної умови.
Для цього конструкцію if або unless ставлять після коду, який потрібно виконати.
value = 1
"1 is equal to 1" if value == 1
# => 1 is equal to 1
"1 is not equal to 1" unless value == 1
# => nil