Entspricht "Weiter" in Ruby

648

In C und vielen anderen Sprachen gibt es ein continueSchlüsselwort, das bei Verwendung innerhalb einer Schleife zur nächsten Iteration der Schleife springt. Gibt es ein Äquivalent zu diesem continueSchlüsselwort in Ruby?

Mark Szymanski
quelle
4
continue "startet" die Schleifen nicht neu, sondern springt zur nächsten Iteration der Schleife.
Matt Crinklaw-Vogt
1
@mlaw: Ich habe meine Frage entsprechend bearbeitet, um zukünftige Verwirrung zu vermeiden.
Mark Szymanski
7
@dbr das gefundene Duplikat wurde nach diesem gefragt.
Droogans

Antworten:

933

Ja, es heißt next.

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

Dies gibt Folgendes aus:

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
quelle
13
So erinnere ich mich - Ruby respektiert Perl ( next) über C ( continue)
Colonel Panic
111

next

Schauen Sie sich auch an, redowelche die aktuelle Iteration wiederholt .

Nick Moore
quelle
39
... weil Rubin so rad ist.
Matt Walters
1
Ruby hat sich viel von Perl geliehen, einschließlich Perls redoBefehl (oder seiner Essenz jedenfalls). Suchen Sie für Rubys Interpretation auf dieser Seite nach "Wiederherstellen" .
MarkDBlackwell
42

Innerhalb von for-Schleifen und Iterator-Methoden wie eachund mapdas nextSchlüsselwort in Ruby springen Sie zur nächsten Iteration der Schleife (wie continuein C).

Was es jedoch tatsächlich tut, ist nur, vom aktuellen Block zurückzukehren. Sie können es also mit jeder Methode verwenden, die einen Block benötigt - auch wenn es nichts mit Iteration zu tun hat.

sepp2k
quelle
sowie schöne Redo-Anweisung
Sigurd
9

Ich denke, es heißt als nächstes .

idursun
quelle
1

Bei Verwendung als Nächstes wird diese Bedingung umgangen und der Rest des Codes funktioniert. Unten habe ich das vollständige Skript bereitgestellt und ausgegeben

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

Ausgabe: Geben Sie die Nummer 10 ein

1 2 3 4 6 7 8 9 10

Rakesh Kumar
quelle