Эквивалент «продолжить» в Ruby - PullRequest
607 голосов
/ 24 октября 2010

В C и многих других языках есть ключевое слово continue, которое при использовании внутри цикла переходит к следующей итерации цикла.Есть ли какой-нибудь эквивалент этого ключевого слова continue в Ruby?

Ответы [ 6 ]

877 голосов
/ 24 октября 2010

Да, это называется next.

for i in 0..5
   if i < 2
     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
 => 0..5 
104 голосов
/ 24 октября 2010

next

также посмотрите на redo, который повторяет текущую итерацию .

75 голосов
/ 25 июня 2012

Письмо Ответ Иана Пертона чуть более идиоматически:

(1..5).each do |x|
  next if x < 2
  puts x
end

Печать:

  2
  3
  4
  5
39 голосов
/ 24 октября 2010

Внутри циклов for и методов итераторов, таких как each и map, ключевое слово next в ruby ​​будет иметь эффект перехода к следующей итерации цикла (аналогично continue в C).

Однако, на самом деле он просто возвращает из текущего блока.Таким образом, вы можете использовать его с любым методом, который принимает блок - даже если он не имеет ничего общего с итерацией.

28 голосов
/ 25 октября 2010

В Ruby есть два других ключевых слова управления циклом / итерацией: redo и retry. Подробнее о них и разнице между ними можно прочитать на Ruby QuickTips .

7 голосов
/ 24 октября 2010

Я думаю, что это называется следующий .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...