English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Ruby предоставляет несколько очень распространенных структур условного выполнения. В этом разделе мы объясним все условия и модификаторы, доступные в Ruby.
if условие [then] code... [elsif условие [then] code...]... [else code...] end
if выражение используется для условного выполнения. Значение false и nil Если это ложно, то все другие значения истинны. Обратите внимание, что Ruby использует elsif, а не else if и elif.
если условие Если это истина, то выполняется codeЕсли условие Если это не истина, то выполняется предложение else code。
Обычно мы опускаем слово then. Если нужно написать полный if-выражение на одной строке, то необходимо использовать then для разделения условия и блока кода. Вот пример:
if a == 4 then a = 7 end
#!/usr/bin/ruby # -*- coding: UTF-8 -*- x=1 if x > 2 puts "x больше 2" elsif x <= 2 и x != 0 puts "x равно 1" else puts "Неизвестно значение x" end
Результат вывода примера выше:
x есть 1
code if condition
если слово if修饰符 означает, что левая часть if выполняется только при выполнении условия справа. То есть если условие Если это истина, то выполняется code。
#!/usr/bin/ruby $debug=1 print "debug\n" if $debug
Результат вывода примера выше:
debug
unless conditional [then] code [else code ] end
unless и if работают наоборот, то есть если условие Если это ложно, то выполняется codeЕсли условие Если это истина, то выполняется предложение else, указанное в нем. code。
#!/usr/bin/ruby # -*- coding: UTF-8 -*- x=1 unless x>2 puts "x меньше 2" else puts "x больше 2" end
Результат выполнения примера выше:
x меньше 2
code unless conditional
если условие Если это ложно, то выполняется code。
#!/usr/bin/ruby # -*- coding: UTF-8 -*- $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
case сначала проверяет выражение для выполнения сравнения и затем выбирает ветвь в зависимости от результатов соответствия.
он использует ===оператор сравнения when указанный выражениевыполнить, если они идентичны when Часть содержимого.
Обычно мы опускаем слово then. Если нужно написать полное выражение when на одной строке, то необходимо использовать then для разделения условия и блока кода. Например:
when a == 4 then a = 7 end
Следовательно:
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 # -*- coding: UTF-8 -*- $age = 5 case $age when 0 .. 2 puts "младенец" when 3 .. 6 puts "ребенок" when 7 .. 12 puts "child" when 13 .. 18 puts "Молодежь" else puts "Другие возрастные группы" end
Результат выполнения примера выше:
Дети
Когда часть "выражение" в case пропущена, вычисляется первое выражение условия when, которое истинно.
foo = false bar = true quu = false case when foo then puts 'foo is true' when bar then puts 'bar is true' when quu then puts 'quu is true' end # Показать "bar is true"