Equivalente di "continua" in Ruby


648

In C e in molte altre lingue, esiste una continueparola chiave che, se utilizzata all'interno di un ciclo, passa alla successiva iterazione del ciclo. Esiste un equivalente di questa continueparola chiave in Ruby?


4
continue non "riavvia" i loop ma passa alla successiva iterazione del loop.
Matt Crinklaw-Vogt,

1
@mlaw: ho modificato la mia domanda di conseguenza per evitare confusioni future.
Mark Szymanski,

7
@dbr il duplicato che hai trovato è stato chiesto dopo questo.
Droogans,

Risposte:


934

Sì, si chiama next.

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

Ciò genera quanto segue:

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
È così che mi ricordo - Ruby rispetta Perl ( next) sopra C ( continue)
Colonnello Panic,

111

next

inoltre, guarda a redoquale ripetizione dell'iterazione corrente .


39
... perché il rubino è così.
matt walters,

1
Ruby prese molto in prestito da Perl, incluso il redocomando di Perl (o la sua essenza, comunque). Per l'interpretazione di Ruby, cerca "Ripeti" in questa pagina .
MarkDBlackwell,


42

All'interno di for-loop e metodi iteratori come eache mapla nextparola chiave in ruby ​​avrà l'effetto di saltare alla successiva iterazione del loop (come continuein C).

Tuttavia, ciò che effettivamente fa è solo tornare dal blocco corrente. Quindi puoi usarlo con qualsiasi metodo che richiede un blocco, anche se non ha nulla a che fare con l'iterazione.


così come la bella dichiarazione redo
Sigurd



1

Utilizzare successivamente, ignorerà tale condizione e il resto del codice funzionerà. Di seguito ho fornito lo script completo e il prodotto

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

Uscita: inserire il nmber 10

1 2 3 4 6 7 8 9 10

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.