Ruby предлагает условные операторы, которые встречаются довольно часто в современных языках. Здесь мы объясним все условные операторы и модификаторы, доступные в Ruby.
if conditional [then] code... [elsif conditional [then] code...]... [else code...] end
Выражение if используются для условного выполнения. Ценности false и nul являются ложными, все остальное — истина.
Выполняет code, если if правда. Если if не верно, code, указанный в else не выполняется.
Выражение if отделен от кода, зарезервированным словом then, переводом строки или точкой с запятой.
#!/usr/bin/ruby x = 1 if x > 2 puts "x больше 2" elsif x <= 2 and x!=0 puts "x is 1" else puts "Я не могу угадать номер" end
x is 1
code if condition
Выполняет code, если if истинен.
#!/usr/bin/ruby $debug = 1 print "debug\n" if $debug
Вывод будет следующий:
debug
unless conditional [then] code [else code ] end
Выполняет if, если if ложь. Если if верно, код, указанный в else не выполняется.
#!/usr/bin/ruby x = 1 unless x>=2 puts "x меньше 2" else puts "x больше 2" end
Вывод будет следующий:
x меньше 2
code unless conditional
Выполняет code, если if является ложь.
#!/usr/bin/ruby $var = 1 print "1 -- Значение\n" if $var print "2 -- Значение\n" unless $var $var = false print "3 -- Значение\n" unless $var
Вывод будет следующий:
1 -- Значение 3 -- Значение
case expression [when expression [, expression ...] [then] code ]... [else code ] end
Сравнивает expression указанного case и указанного при использовании оператора === и выполняет соответствующий code.
В expression указано, что when оценивается как левый операнд. Если нет, когда when совпадают, case выполняет код из класса else.
А заявление when это выражение отделяется от кода, зарезервированным словом then, переводом строки или точкой с запятой. Таким образом:
case expr0 when expr1, expr2 stmt1 when expr3, expr4 stmt2 else stmt3 end
в основном, подобный следующим:
_tmp = expr0 if expr1 === _tmp || expr2 === _tmp stmt1 elsif expr3 === _tmp || expr4 === _tmp stmt2 else stmt3 end
#!/usr/bin/ruby $age = 5 case $age when 0 .. 2 puts "младенец" when 3 .. 6 puts "маленький ребенок" when 7 .. 12 puts "ребенок" when 13 .. 18 puts "подросток" else puts "совершеннолетний" end
Вывод будет следующий:
маленький ребенок