Equivalente a "continuar" en Ruby


648

En C y en muchos otros lenguajes, hay una continuepalabra clave que, cuando se usa dentro de un ciclo, salta a la siguiente iteración del ciclo. ¿Hay algún equivalente de esta continuepalabra clave en Ruby?


44
continuar no "reinicia" los bucles, sino que salta a la siguiente iteración del bucle.
Matt Crinklaw-Vogt

1
@mlaw: edité mi pregunta en consecuencia para evitar futuras confusiones.
Mark Szymanski

77
@dbr se le preguntó el duplicado que encontró después de este.
Droogans

Respuestas:


934

Si, se llama next.

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

Esto genera lo siguiente:

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
Así es como lo recuerdo: Ruby respeta a Perl ( next) por encima de C ( continue)
Coronel Panic

111

next

Además, observe redoqué rehace la iteración actual .


39
... porque Ruby es así de radical.
Matt Walters

1
Ruby tomó prestado mucho de Perl, incluido el redocomando de Perl (o su esencia, de todos modos). Para la interpretación de Ruby, busque "rehacer" dentro de esta página .
MarkDBlackwell


42

Dentro de los bucles for y los métodos de iterador como eachy mapla nextpalabra clave en ruby ​​tendrá el efecto de saltar a la siguiente iteración del bucle (igual que continueen C).

Sin embargo, lo que realmente hace es regresar del bloque actual. Por lo tanto, puede usarlo con cualquier método que tome un bloque, incluso si no tiene nada que ver con la iteración.


así como una bonita declaración de rehacer
Sigurd



1

Use el siguiente, omitirá esa condición y el resto del código funcionará. A continuación he proporcionado el guión completo y puesto fuera

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

Salida: ingrese el número 10

1 2 3 4 6 7 8 9 10

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.