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?


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 

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 .


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


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.


bem como declaração refazer agradável
Sigurd



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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.