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
Antwort
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
So erinnere ich mich - Ruby respektiert Perl (' next') über C ('continue') –
Innen for-Schleifen und Iteratormethoden wie each
map
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.
Ich denke, es heißt next.
next
auch bei redo
sehen, die die aktuellen Iteration nachvollzieht.
... cause ruby is rad so wie das. –
Ruby hat zwei weitere Schlüsselwörter für die Schleifen-/Iterationssteuerung: redo
und retry
. Read more about them, and the difference between them, at Ruby QuickTips.
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
weiterhin nicht "Neustart" die Schleifen, sondern springt in die nächste Iteration der Schleife. –
@mlaw: Ich habe meine Frage entsprechend bearbeitet, um zukünftige Verwirrung zu vermeiden. –
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