2010-10-24 5 views
522

In C und vielen anderen Sprachen gibt es ein continue Schlüsselwort, das, wenn innerhalb einer Schleife verwendet wird, auf die nächste Iteration der Schleife springt. Gibt es ein Äquivalent dieses continue Schlüsselworts in Ruby?Äquivalent von "weiter" in Ruby

+3

weiterhin nicht "Neustart" die Schleifen, sondern springt in die nächste Iteration der Schleife. –

+1

@mlaw: Ich habe meine Frage entsprechend bearbeitet, um zukünftige Verwirrung zu vermeiden. –

+3

mögliches Duplikat von [In Ruby, wie überspringe ich eine Schleife in einer .each-Schleife, ähnlich wie 'weiter'] (http://stackoverflow.com/questions/4230322/in-ruby-how-do-i-skip -a-loop-in-einer-Schleife-ähnlich-um fortzufahren) – dbr

Antwort

772

Ja, es heißt next.

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

Das gibt das folgende:

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

So erinnere ich mich - Ruby respektiert Perl (' next') über C ('continue') –

36

Innen for-Schleifen und Iteratormethoden wie eachmap und das next Schlüsselwort in rubin wird die Wirkung des Springens auf die nächste Iteration der Schleife (die gleichen wie in continue C) hat.

Aber was es tatsächlich tut, ist nur aus dem aktuellen Block zurückzukehren. Sie können es also mit jeder Methode verwenden, die einen Block nimmt - auch wenn es nichts mit Iteration zu tun hat.

+0

sowie nette Redo-Anweisung – Sigurd

+5

+22 zur Erklärung der semantischen Bedeutung von 'next' – Jack

89

next

auch bei redo sehen, die die aktuellen Iteration nachvollzieht.

+33

... cause ruby ​​is rad so wie das. –

65

Schreiben Ian Purton's answer in einer etwas idiomatische Weise:

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

Drucke:

2 
    3 
    4 
    5 
Verwandte Themen