Учебники

Рубин — Петли

Циклы в Ruby используются для выполнения одного и того же блока кода указанное количество раз. В этой главе подробно описаны все операторы цикла, поддерживаемые Ruby.

Рубиновый оператор

Синтаксис

while conditional [do]
   code
end

Выполняет код, пока условное истинно. Условный цикл while отделяется от кода зарезервированным словом do, символом новой строки, обратной косой чертой \ или точкой с запятой;.

пример

Live Demo

#!/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 без выражений восстановления или проверки, код выполняется один раз перед оценкой условия.

пример

Live Demo

#!/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 , новой строкой или точкой с запятой.

пример

Live Demo

#!/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 без предложений спасения или обеспечения, код выполняется один раз перед оценкой условия .

пример

Live Demo

#!/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

Выполняет код один раз для каждого элемента в выражении .

пример

Live Demo

#!/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, новой строкой или точкой с запятой.

пример

Live Demo

#!/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

Завершает самый внутренний цикл. Завершает метод со связанным блоком, если вызван в блоке (с методом, возвращающим ноль).

пример

Live Demo

#!/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, возвращающим ноль).

пример

Live Demo

#!/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

Это даст следующий результат и будет идти в бесконечном цикле —