Эквивалент "продолжить" в Ruby


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

6 562

6 ответов:

Да, это называется 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 

next

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

писать Иэн Purton это!--5--> ответ чуть более идиоматично:

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

принты:

  2
  3
  4
  5

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

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

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

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