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

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

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 на next ключевое слово в Рубине будет иметь эффект перехода к следующей итерации цикла (так же, как continue В C).

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


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


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