Поиск по сайту:
Основной тон жизни — это скука, впечатление чего-то серого (Ж. и Э. Гонкуры).

Ruby – Циклы

[wtr-time]
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...
06.07.2018
Язык программирования Ruby

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

Ruby. Заявление while

Синтаксис

while conditional [do]
   code
end

 

Выполняет code, пока if равно true. Цикл while  отделен от code зарезервированным словом do, символом новой строки, обратным слэшем \ или точкой с запятой;.

Пример

#!/usr/bin/ruby

$i = 0
$num = 5

while $i < $num  do
   puts("Внутри цикла i = #$i" )
   $i +=1
end

 

Это приведет к следующему результату:

Внутри цикла i = 0
Внутри цикла i = 1
Внутри цикла i = 2
Внутри цикла i = 3
Внутри цикла i = 4

Ruby. Модификатор while

Синтаксис

code while condition

OR

begin 
  code 
end while conditional

Выполняет code, пока while равно true.

Если модификатор while следует за инструкцией begin без каких- либо аварийных или обязательных условий, code выполняется один раз перед вычислением условного выражения.

Пример

#!/usr/bin/ruby

$i = 0
$num = 5
begin
   puts("Внутри цикла i = #$i" )
   $i +=1
end while $i < $num

 

Это приведет к следующему результату:

Внутри цикла i = 0
Внутри цикла i = 1
Внутри цикла i = 2
Внутри цикла i = 3
Внутри цикла i = 4

Ruby. Заявление until

until conditional [do]
   code
end

 

Выполняет code, а while – false. Утверждение until  условно отделяются от code зарезервированным словом do, переводом строкой или точкой с запятой.

Пример

#!/usr/bin/ruby

$i = 0
$num = 5

until $i > $num  do
   puts("Внутри цикла i = #$i" )
   $i +=1;
end

 

Это приведет к следующему результату:

Внутри цикла i = 0
Внутри цикла i = 1
Внутри цикла i = 2
Внутри цикла i = 3
Внутри цикла i = 4
Внутри цикла i = 5

Ruby модификатор until

Синтаксис

code until conditional

OR

begin
   code
end until conditional

 

Выполняет code, пока until – false.

Если модификатор until не будет следовать за инструкцией begin без каких- либо действий, code выполняется один раз перед вычислением выражения conditional.

Пример

#!/usr/bin/ruby

$i = 0
$num = 5
begin
   puts("Внутри цикла i = #$i" )
   $i +=1;
end until $i > $num

 

Это приведет к следующему результату:

Внутри цикла i = 0
Внутри цикла i = 1
Внутри цикла i = 2
Внутри цикла i = 3
Внутри цикла i = 4
Внутри цикла i = 5

Ruby. Заявление for

Синтаксис

for variable [, variable ...] in expression [do]
   code
end

 

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

Пример

#!/usr/bin/ruby

for i in 0..5
   puts "Значение локальной переменной #{i}"
end

 

Здесь мы определили диапазон 0..5. Заявление для i в 0..5 позволит iпринимать значения в диапазоне от 0 до 5 (включая 5). Это приведет к следующему результату:

Значение локальной переменной 0
Значение локальной переменной 1
Значение локальной переменной 2
Значение локальной переменной 3
Значение локальной переменной 4
Значение локальной переменной 5

 

for … in loop почти точно эквивалентно следующему:

(expression).each do |variable[, variable...]| code end

 

за исключением того, что цикл for не создает новую область для локальных переменных. Для передачи контура в выражении отделен от code зарезервированным словом do, переводом строки или точкой с запятой.

Пример

#!/usr/bin/ruby

(0..5).each do |i|
   puts "Значение локальной переменной #{i}"
end

 

Это приведет к следующему результату:

Значение локальной переменной 0
Значение локальной переменной 1
Значение локальной переменной 2
Значение локальной переменной 3
Значение локальной переменной 4
Значение локальной переменной 5

Ruby. Заявление break

Синтаксис

break

 

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

Пример

#!/usr/bin/ruby

for i in 0..5
   if i > 2 then
      break
   end
   puts "Значение локальной переменной #{i}"
end

 

Это приведет к следующему результату:

Значение локальной переменной 0
Значение локальной переменной 1
Значение локальной переменной 2

Ruby. Заявление next

Синтаксис

next

 

Переход к следующему циклу внутри цикла. Завершает выполнение блока, если он вызван внутри блока (с выходом или возвратом вызова nil).

Пример

#!/usr/bin/ruby

for i in 0..5
   if i < 2 then
      next
   end
   puts "Значение локальной переменной #{i}"
end

 

Это приведет к следующему результату:

Значение локальной переменной 2
Значение локальной переменной 3
Значение локальной переменной 4
Значение локальной переменной 5

Ruby. Заявление redo

Синтаксис

redo

 

Перезапускает цикл самого внутреннего цикла, не проверяя условия цикла. Перезапускает yield  или call, если вызывается внутри блока.

Пример

#!/usr/bin/ruby

for i in 0..5
   if i < 2 then
      puts "Значение локальной переменной #{i}"
      redo
   end
end

 

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

Значение локальной переменной 0
Значение локальной переменной 0
............................

Ruby. Заявление retry

Синтаксис

retry

 

Если в предложении rescue выражения begin отображается retry, перезапустите программу с начала тела begin.

begin
   do_something # exception raised
rescue
   # handles error
   retry  # restart from beginning
end

 

Если в цикле отображается retry, блок или тело выражения 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 "Значение локальной переменной #{i}"
end

 

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

Значение локальной переменной 1
Значение локальной переменной 2
Значение локальной переменной 1
Значение локальной переменной 2
Значение локальной переменной 1
Значение локальной переменной 2
............................

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Если статья понравилась, то поделитесь ей в социальных сетях:

Читайте также

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

**ссылки nofollow

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Спасибо!

Теперь редакторы в курсе.