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?

Mark Szymanski
fuente
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 
Ian Purton
fuente
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 .

Nick Moore
fuente
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.

sepp2k
fuente
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

Rakesh Kumar
fuente