Циклы в Ruby используются для выполнения одного и того же блока кода указанное количество раз. В этой главе подробно описаны все операторы цикла, поддерживаемые Ruby.
Рубиновый оператор
Синтаксис
while conditional [do] code end
Выполняет код, пока условное истинно. Условный цикл while отделяется от кода зарезервированным словом do, символом новой строки, обратной косой чертой \ или точкой с запятой;.
пример
#!/usr/bin/ruby $i = 0 $num = 5 while $i < $num do puts("Inside the loop i = #$i" ) $i +=1 end
Это даст следующий результат —
Inside the loop i = 0 Inside the loop i = 1 Inside the loop i = 2 Inside the loop i = 3 Inside the loop i = 4
Рубиновый модификатор
Синтаксис
code while condition OR begin code end while conditional
Выполняет код, пока условное истинно.
Если модификатор while следует за оператором begin без выражений восстановления или проверки, код выполняется один раз перед оценкой условия.
пример
#!/usr/bin/ruby $i = 0 $num = 5 begin puts("Inside the loop i = #$i" ) $i +=1 end while $i < $num
Это даст следующий результат —
Inside the loop i = 0 Inside the loop i = 1 Inside the loop i = 2 Inside the loop i = 3 Inside the loop i = 4
Рубин до Заявления
until conditional [do] code end
Выполняет код, в то время как условный ложный. Условный оператор до отделяется от кода зарезервированным словом do , новой строкой или точкой с запятой.
пример
#!/usr/bin/ruby $i = 0 $num = 5 until $i > $num do puts("Inside the loop i = #$i" ) $i +=1; end
Это даст следующий результат —
Inside the loop i = 0 Inside the loop i = 1 Inside the loop i = 2 Inside the loop i = 3 Inside the loop i = 4 Inside the loop i = 5
Руби до модификатора
Синтаксис
code until conditional OR begin code end until conditional
Выполняет код, в то время как условный ложный.
Если модификатор before следует за оператором begin без предложений спасения или обеспечения, код выполняется один раз перед оценкой условия .
пример
#!/usr/bin/ruby $i = 0 $num = 5 begin puts("Inside the loop i = #$i" ) $i +=1; end until $i > $num
Это даст следующий результат —
Inside the loop i = 0 Inside the loop i = 1 Inside the loop i = 2 Inside the loop i = 3 Inside the loop i = 4 Inside the loop i = 5
Рубин для Заявления
Синтаксис
for variable [, variable ...] in expression [do] code end
Выполняет код один раз для каждого элемента в выражении .
пример
#!/usr/bin/ruby for i in 0..5 puts "Value of local variable is #{i}" end
Здесь мы определили диапазон 0..5. Утверждение для i в 0..5 позволит i принимать значения в диапазоне от 0 до 5 (включая 5). Это даст следующий результат —
Value of local variable is 0 Value of local variable is 1 Value of local variable is 2 Value of local variable is 3 Value of local variable is 4 Value of local variable is 5
Цикл for … in почти в точности эквивалентен следующему:
(expression).each do |variable[, variable...]| code end
за исключением того, что цикл for не создает новую область видимости для локальных переменных. Выражение цикла for отделяется от кода зарезервированным словом do, новой строкой или точкой с запятой.
пример
#!/usr/bin/ruby (0..5).each do |i| puts "Value of local variable is #{i}" end
Это даст следующий результат —
Value of local variable is 0 Value of local variable is 1 Value of local variable is 2 Value of local variable is 3 Value of local variable is 4 Value of local variable is 5
Ruby Break Заявление
Синтаксис
break
Завершает самый внутренний цикл. Завершает метод со связанным блоком, если вызван в блоке (с методом, возвращающим ноль).
пример
#!/usr/bin/ruby for i in 0..5 if i > 2 then break end puts "Value of local variable is #{i}" end
Это даст следующий результат —
Value of local variable is 0 Value of local variable is 1 Value of local variable is 2
Ruby следующее заявление
Синтаксис
next
Переходит к следующей итерации самого внутреннего цикла. Завершает выполнение блока, если он вызывается внутри блока (с yield или call, возвращающим ноль).
пример
#!/usr/bin/ruby for i in 0..5 if i < 2 then next end puts "Value of local variable is #{i}" end
Это даст следующий результат —
Value of local variable is 2 Value of local variable is 3 Value of local variable is 4 Value of local variable is 5
Ruby Redo Заявление
Синтаксис
redo
Перезапускает эту итерацию самого внутреннего цикла без проверки состояния цикла. Перезапускает yield или call, если вызывается в блоке.
пример
#!/usr/bin/ruby for i in 0..5 if i < 2 then puts "Value of local variable is #{i}" redo end end
Это даст следующий результат и будет идти в бесконечном цикле —
Value of local variable is 0 Value of local variable is 0 ............................
Заявление о повторных попытках Ruby
Синтаксис
retry
Если повторная попытка появляется в предложении спасения выражения начала, перезапустите с начала тела начала.
begin do_something # exception raised rescue # handles error retry # restart from beginning end
Если в итераторе появляется повтор, блок или тело выражения for перезапускает вызов вызова итератора. Аргументы к итератору переоцениваются.
for i in 1..5 retry if some_condition # restart from i == 1 end
пример
#!/usr/bin/ruby for i in 0..5 retry if i > 2 puts "Value of local variable is #{i}" end
Это даст следующий результат и будет идти в бесконечном цикле —