Условные операторы 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