Equivalente a "continue" em Ruby

648

Em C e em muitos outros idiomas, há uma continuepalavra - chave que, quando usada dentro de um loop, salta para a próxima iteração do loop. Existe algum equivalente dessa continuepalavra - chave no Ruby?

Mark Szymanski
fonte
4
continue não "reinicia" os loops, mas salta para a próxima iteração do loop.
precisa saber é o seguinte
1
@ mlaw: editei minha pergunta de acordo para evitar futuras confusões.
Mark Szymanski #
7
@dbr a duplicata que você encontrou foi solicitada após esta.
Droogans

Respostas:

934

Sim, é chamado next.

for i in 0..5
   if i < 2
     next
   end
   puts "Value of local variable is #{i}"
end

Isso gera o seguinte:

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 
Ian Purton
fonte
13
Isto é como eu me lembro - Rubi respeita Perl ( next) acima C ( continue)
Coronel Pânico
111

next

Além disso, veja redoqual refaz a iteração atual .

Nick Moore
fonte
39
... porque Ruby é rad assim.
Matt Walters
1
Ruby emprestou muito do Perl, incluindo o redocomando do Perl (ou sua essência, pelo menos). Para a interpretação de Ruby, procure por "refazer" nesta página .
MarkDBlackwell
87

Escrevendo a resposta de Ian Purton de uma maneira um pouco mais idiomática:

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

Impressões:

  2
  3
  4
  5
sberkley
fonte
42

Dentro para-loops e iteradoras métodos como eache mapa nextpalavra-chave na rubi terá o efeito de salto para a iteração seguinte do ciclo (o mesmo como continueem C).

No entanto, o que ele realmente faz é apenas retornar do bloco atual. Portanto, você pode usá-lo com qualquer método que aceite um bloco - mesmo que não tenha nada a ver com iteração.

sepp2k
fonte
bem como declaração refazer agradável
Sigurd
9

Eu acho que é chamado a seguir .

idursun
fonte
1

Use a seguir, ignorará essa condição e o restante do código funcionará. Abaixo eu forneci o script completo e coloquei

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()

Saída: Digite o número 10

1 2 3 4 6 7 8 9 10

Rakesh Kumar
fonte