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

648

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

Марк Шиманский
источник
4
continue не «перезапускает» циклы, но переходит к следующей итерации цикла.
Мэтт Кринкло-Фогт
1
@mlaw: я отредактировал свой вопрос соответственно, чтобы избежать путаницы в будущем.
Марк Шимански
7
@dbr дубликат, который вы нашли, был задан после этого.
Дрооганс

Ответы:

934

Да, это называется 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 
Ян Пертон
источник
13
Вот как я помню - Руби уважает Perl ( next) выше C ( continue)
Полковник Panic
111

next

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

Ник Мур
источник
39
... потому что рубин рад так.
Мэтт Уолтерс
1
Руби многое позаимствовал у Perl, включая redoкоманду Perl (или ее сущность, в любом случае). Для интерпретации Руби, найдите «повторить» на этой странице .
MarkDBlackwell
42

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

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

sepp2k
источник
а также хорошее повторное заявление
Сигурд
1

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

class TestBreak
  puts " Enter the nmber"
  no= gets.to_i
  for i in 1..no
    if(i==5)
      next
    else 
      puts i
    end
  end
end

obj=TestBreak.new()

Выход: введите число 10

1 2 3 4 6 7 8 9 10

Ракеш Кумар
источник