Рубин — Петли

Поділитись


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

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

пример

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

Поділитись