2010-10-24 10 views
522

In C e in molte altre lingue, esiste una parola chiave continue che, se utilizzata all'interno di un ciclo, salta alla successiva iterazione del ciclo. Esiste un equivalente di questa parola chiave continue in Ruby?Equivalente di "continua" in Ruby

+3

Continua non si "Restart" i passanti, ma salta la prossima iterazione del ciclo. –

+1

@mlaw: ho modificato la mia domanda di conseguenza per evitare confusione futura. –

+3

possibile duplicato di [In Ruby, come faccio a saltare un ciclo in un ciclo .each, simile a 'continua'] (http://stackoverflow.com/questions/4230322/in-ruby-how-do-i-skip -a-loop-in-a-each-loop-similiar-to-continue) – dbr

risposta

772

Sì, si chiama next.

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

Questa emette il seguente:

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 
+8

Questo è il modo in cui mi ricordo - Ruby rispetta Perl (' next') sopra C ('continue') –

36

Inside-loops e metodi iteratore come each e map la parola next in rubino avrà l'effetto di saltare alla successiva iterazione del ciclo (stesso come continue in C).

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

+0

nonché bella ripetizione dichiarazione – Sigurd

+5

+22 per spiegare il significato semantico di 'next' – Jack

89

next

inoltre, cerca redo che rifà il corrente iterazione.

+33

... perché ruby ​​is rad come quello. –

65

Scrivendo Ian Purton's answer in un modo un po 'più idiomatica:

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

Stampe:

2 
    3 
    4 
    5 
Problemi correlati