Условные операторы ruby


Условные операторы - это специальные операторы, которые выполняют код в зависимости от условия.
Бывают в двух состояниях, если условие выполняется(true), если условие не выполняется(false)
В ruby существует всего два условных оператора if и case, а также присутствует тернарный оператор.

Условный оператор if

Для его создания используется конструкция.
if (условие)

end


a = 5
if a == 5
puts "Верно #{a} == 5"
end
#=> Верно 5 == 5

Использование #{} в строке, позволяет вернуть значение переменной в строку.

Иногда вместо if используют unless он имеет абсолютно такой же синтаксис как if, но выполняется если условии не верно.
a = 5
unless a == 5
puts "Верно #{a} == 5"
end
#=>

В результате, код внутри условного выражения не выполнится.

Часто используют ключевое слово else, которое служит для того чтобы выполнить код, если условие не верно.
Конструкция if-else

a = 3
b = 5
if(b < a)
puts "#{b} меньше #{a}"
else
puts "#{a} меньше #{b}"
end

if возвращает значение, поэтому его можно присвоить
name = if x == 1
"one"
end

В языке ruby есть краткий способ записи условного оператора if
a,b = b,a if a == 3

Здесь мы переприсваиваем a и b, если a равно 3

if-elsif-end Часто используют дополнительное ключевое слово elsif, которое используется для создания множества условий


a = 3
b = 5
if(b < a)
puts "#{b} меньше #{a}"
elsif(a == b)
puts "#{a} равно #{b}"
elsif(b > a)
puts "#{b} больше #{a}"
end


Важный момент, что если несколько условий верные, будет выполнено только первое условие. В примере последнее условие верное, но оно не будет выполнено.
a = 3
b = 5
с = 5

if(b < a)
puts "#{b} меньше #{a}"
elsif(a == b)
puts "#{a} равно #{b}"
elsif(b > a)
puts "#{b} больше #{a}"
elsif(b == с)
puts "#{b} равно #{с}"
else puts "Все не верно"
end



Case
Для проверки множества условий используют условный оператор case

case(оператор)
when (условие)
действие1
when (условие)
действие2
when (условие)
действие3
else
действие
end


age = 5

case age
when 0 .. 2
puts "Ляля"
when 3 .. 6
puts "Маленький подросток"
when 7 .. 12
puts "Почти подросток"
when 13 .. 18
puts "Подросток"
else
puts "Не правильный ребенок"
end




Можно записывать case без условия. Тогда выполнится первое when которое вернет true. Например
case
when x==1 puts "x equal one"
when x==2 puts "x equal two"
end


Тернарный оператор

Используется для краткой записи условия
(условие) ? действие1 : действие2
x = 1
x == 1? "one" : x - 1