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?


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 

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 .


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.


sowie schöne Redo-Anweisung
Sigurd



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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.