Ruby Schleifen

Schleifen in Ruby werden verwendet, um denselben Codeblock mehrmals auszuführen. In diesem Kapitel werden alle von Ruby unterstützten Schleifenanweisungen ausführlich beschrieben.

Ruby whileAnweisung

Syntax

while Bedingung [do] Code end

oder

Syntax

while Bedingung [:] Code end

WennBedingungWenn wahr, ausführenCode。

In der Syntax können do oder : weggelassen werden. Wenn Sie jedoch einen while-Ausdruck in einer Zeile schreiben möchten, müssen Sie do oder : verwenden, um die Bedingung vom Codeblock zu trennen.

Beispiel

#!/usr/bin/ruby # -*- coding: UTF-8 -*- $i = 0 $num = 5 while $i < $num do puts("#!/usr/bin/ruby # -*- coding: UTF-8 -*- $i = 0 $num = 5 while $i < $num do puts("In the loop statement i = #$i" ) $i +=1 end" ) $i +=1 end

Ausprobieren »

Die Ausgabe des obigen Beispiels ist:

在循环语句中 i = 0
在循环语句中 i = 1
在循环语句中 i = 2
在循环语句中 i = 3
在循环语句中 i = 4

Ruby whileModifizierer

Syntax

Code while Bedingungorbegin Code end while Bedingung

WennBedingungWenn wahr, ausführenCode。

WennwhileEin Modifizierer folgt einem ... ohnerescueoder eine ensure-Klauselbeginnach einer Anweisung,Codewirdbedingteinmal ausgeführt, bevor die Bedingung ausgewertet wird.

Beispiel

#!/usr/bin/ruby # -*- coding: UTF-8 -*- $i = 0 $num = 5 begin puts("#!/usr/bin/ruby # -*- coding: UTF-8 -*- $i = 0 $num = 5 begin puts("In the loop statement i = #$i" ) $i +=1 end while $i < $num" ) $i +=1 end while $i < $num

Ausprobieren »

Die Ausgabe des obigen Beispiels ist:

在循环语句中 i = 0
在循环语句中 i = 1
在循环语句中 i = 2
在循环语句中 i = 3
在循环语句中 i = 4

Ruby untilAnweisung

Syntax

until Bedingung [do] Code end

WennBedingungWenn falsch, führe aus:Code。

In der Syntax kann do weggelassen werden. Wenn Sie jedoch einen until-Ausdruck in einer Zeile schreiben möchten, müssen Sie do verwenden, um die Bedingung vom Codeblock zu trennen.

Beispiel

#!/usr/bin/ruby # -*- coding: UTF-8 -*- $i = 0 $num = 5 until $i > $num do puts("#!/usr/bin/ruby # -*- coding: UTF-8 -*- $i = 0 $num = 5 until $i > $num do puts("In the loop statement i = #$i" ) $i +=1; end" ) $i +=1; end

Ausprobieren »

Die Ausgabe des obigen Beispiels ist:

在循环语句中 i = 0
在循环语句中 i = 1
在循环语句中 i = 2
在循环语句中 i = 3
在循环语句中 i = 4
在循环语句中 i = 5

Ruby untilModifikator

Syntax

Code until Bedingungoderbegin Code end until Bedingung

WennBedingungWenn falsch, führe aus:Code。

WennuntilEin Modifikator folgt einem ... ohnerescueoder einer ensure-Klauselbeginnach einer Anweisung,Codewirdbedingteinmal ausgeführt, bevor die Bedingung ausgewertet wird.

Beispiel

#!/usr/bin/ruby # -*- coding: UTF-8 -*- $i = 0 $num = 5 begin puts("#!/usr/bin/ruby # -*- coding: UTF-8 -*- $i = 0 $num = 5 begin puts("In the loop statement i = #$i" ) $i +=1; end until $i > $num" ) $i +=1; end until $i > $num

Ausprobieren »

Die Ausgabe des obigen Beispiels ist:

在循环语句中 i = 0
在循环语句中 i = 1
在循环语句中 i = 2
在循环语句中 i = 3
在循环语句中 i = 4
在循环语句中 i = 5

Ruby forAnweisung

Syntax

for Variable [, Variable ...] in Ausdruck [do] Code end

Zuerst wird der Ausdruck ausgewertet, um ein Objekt zu erhalten, dann fürAusdruckjedes darin enthaltene Element einmal ausführenCode。

Beispiel

#!/usr/bin/ruby # -*- coding: UTF-8 -*- for i in 0..5 puts "#!/usr/bin/ruby # -*- coding: UTF-8 -*- for i in 0..5 puts "The value of the local variable is #{i}" end" end

Ausprobieren »

Hier haben wir den Bereich 0..5 definiert. Die Anweisung for i in 0..5 lässt den Wert von i von 0 bis 5 reichen (einschließlich 5).

Die Ausgabe des obigen Beispiels ist:

局部变量的值为 0
局部变量的值为 1
局部变量的值为 2
局部变量的值为 3
局部变量的值为 4
局部变量的值为 5

for...inDie Schleife ist nahezu genau äquivalent zu:

(Ausdruck).each do |Variable[, Variable...]| Code end

Die for-Schleife erstellt jedoch keinen neuen Gültigkeitsbereich für lokale Variablen.

In der Syntax kann do weggelassen werden. Wenn Sie jedoch einen for-Ausdruck in einer Zeile schreiben möchten, müssen Sie do verwenden, um die Bedingung vom Codeblock zu trennen.

Beispiel

#!/usr/bin/ruby # -*- coding: UTF-8 -*- (0..5).each do |i| puts "#!/usr/bin/ruby # -*- coding: UTF-8 -*- for i in 0..5 do puts "The value of the local variable is #{i}" end" end

Ausprobieren »

Die Ausgabe des obigen Beispiels ist:

局部变量的值为 0
局部变量的值为 1
局部变量的值为 2
局部变量的值为 3
局部变量的值为 4
局部变量的值为 5

Ruby breakAnweisung

Syntax

break

Beendet die innerste Schleife. Wenn sie innerhalb eines Blocks aufgerufen wird, beendet sie die mit dem Block verknüpfte Methode (die Methode gibt nil zurück).

Beispiel

#!/usr/bin/ruby # -*- coding: UTF-8 -*- for i in 0..5 if i > 2 then break end puts "#!/usr/bin/ruby # -*- coding: UTF-8 -*- for i in 0..5 if i > 2 then break end puts "The value of the local variable is #{i}" end" end

Ausprobieren »

Die Ausgabe des obigen Beispiels ist:

局部变量的值为 0
局部变量的值为 1
局部变量的值为 2

Ruby nextAnweisung

Syntax

next

Springt zur nächsten Iteration der Schleife. Wenn sie innerhalb eines Blocks aufgerufen wird, beendet sie die Ausführung des Blocks (yieldder Ausdruck gibt nil zurück).

Beispiel

#!/usr/bin/ruby # -*- coding: UTF-8 -*- for i in 0..5 if i < 2 then next end puts "#!/usr/bin/ruby # -*- coding: UTF-8 -*- for i in 0..5 if i < 2 then next end puts "The value of the local variable is #{i}" end" end

Ausprobieren »

Die Ausgabe des obigen Beispiels ist:

局部变量的值为 2
局部变量的值为 3
局部变量的值为 4
局部变量的值为 5

Ruby redoAnweisung

Syntax

redo

Startet die aktuelle Iteration der innersten Schleife neu, ohne die Schleifenbedingung zu prüfen. Wenn sie innerhalb eines Blocks aufgerufen wird, startet sieyieldodercall neu。

Beispiel

#!/usr/bin/ruby # -*- coding: UTF-8 -*- for i in 0..5 if i < 2 then puts "#!/usr/bin/ruby # -*- coding: UTF-8 -*- for i in 0..5 if i < 2 then puts "The value of the local variable is #{i}" redo end end" redo end end

Dies erzeugt das folgende Ergebnis und geht in eine Endlosschleife über:

局部变量的值为 0
局部变量的值为 0
............................

Ruby retryAnweisung

Hinweis: Versionen 1.9 und höher unterstützen die Verwendung von retry in Schleifen nicht.

Syntax

retry

Wennretryin der rescue-Klausel eines begin-Ausdrucks erscheint, dann startet es vom Anfang des begin-Rumpfs neu.

begin do_something #die ausgelöste Ausnahme rescue #Fehler behandeln retry #vom Anfang von begin neu starten end

Wenn retry innerhalb einer Iteration, eines Blocks oder des Rumpfs eines for-Ausdrucks erscheint, startet es den Iterationsaufruf neu. Die Argumente der Iteration werden neu ausgewertet.

for i in 1..5 retry if some_condition #von i == 1 neu starten end

Beispiel

#!/usr/bin/ruby # -*- coding: UTF-8 -*- for i in 1..5 retry if i > 2 puts "#!/usr/bin/ruby # -*- coding: UTF-8 -*- for i in 0..5 retry if i > 2 puts "Der Wert der lokalen Variablen ist #{i}" end" end

Dies erzeugt das folgende Ergebnis und geht in eine Endlosschleife über:

局部变量的值为 1
局部变量的值为 2
局部变量的值为 1
局部变量的值为 2
局部变量的值为 1
局部变量的值为 2
............................
Andere Erweiterungen