English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Die Schleifen in Ruby werden verwendet, um denselben Codeblock mehrere Male auszuführen. In diesem Kapitel wird eine detaillierte Einführung in alle Schleifenoperationen von Ruby gegeben.
solange bedingter Bedingung [do] code end
code until bedingung
solange bedingter Bedingung [:] code end
end until bedingung bedingung wenn wahr, dann ausführen code.
In der Grammatik kann do oder : weggelassen werden. Um einen while- Ausdruck auf einer Zeile zu schreiben, muss jedoch die Bedingung oder das Programmsegment durch do oder : getrennt werden.
#!/usr/bin/ruby # -*- coding: UTF-8 -*- $i = 0 $num = 5 solange $i < $num tun puts("In der Schleifenanweisung i = #$i") $i +=1 end
Die obige Beispiel-Ausgabe ist:
In der Schleifenanweisung i = 0 In der Schleifenanweisung i = 1 In der Schleifenanweisung i = 2 In der Schleifenanweisung i = 3 In der Schleifenanweisung i = 4
code während Bedingung code until bedingung begin code beenden, solange bedingter Bedingung
end until bedingung bedingung wenn wahr, dann ausführen code.
wenn solange bis rescue Modifikator folgt einem, der keine begin oder dem 'ensure'-Unterklauselcode Wird nach der Anweisung oder dem bedingung Wird vor der Ausführung einmal beurteilt.
#!/usr/bin/ruby # -*- coding: UTF-8 -*- $i = 0 $num = 5 begin puts("In der Schleifenanweisung i = #$i") $i +=1 beenden, solange $i < $num
Die obige Beispiel-Ausgabe ist:
In der Schleifenanweisung i = 0 In der Schleifenanweisung i = 1 In der Schleifenanweisung i = 2 In der Schleifenanweisung i = 3 In der Schleifenanweisung i = 4
bis bedingter Bedingung [do] code end
end until bedingung bedingung 为假时,执行 code.
wenn falsch, wird ausgeführt
#!/usr/bin/ruby # -*- coding: UTF-8 -*- $i = 0 $num = 5 In der Syntax kann 'do' weggelassen werden. Wenn jedoch ein Zeilenübergreifendes 'until'-Format geschrieben werden soll, muss 'do' zwischen der Bedingung oder dem Programmcode stehen. puts("In der Schleifenanweisung i = #$i") $i +=1; end
Die obige Beispiel-Ausgabe ist:
In der Schleifenanweisung i = 0 In der Schleifenanweisung i = 1 In der Schleifenanweisung i = 2 In der Schleifenanweisung i = 3 In der Schleifenanweisung i = 4 In der Schleifenanweisung i = 5
Modifikator code until bedingung begin code oder
end until bedingung bedingung wenn code.
wenn wenn falsch, wird ausgeführt bis rescue Modifikator folgt einem, der keine begin oder dem 'ensure'-Unterklauselcode Wird nach der Anweisung oder dem bedingung Wird vor der Ausführung einmal beurteilt.
#!/usr/bin/ruby # -*- coding: UTF-8 -*- $i = 0 $num = 5 begin puts("In der Schleifenanweisung i = #$i") $i +=1; end until $i > $num
Die obige Beispiel-Ausgabe ist:
In der Schleifenanweisung i = 0 In der Schleifenanweisung i = 1 In der Schleifenanweisung i = 2 In der Schleifenanweisung i = 3 In der Schleifenanweisung i = 4 In der Schleifenanweisung i = 5
for variable [, variable ...] in expression [do] code end
Zunächst wird das Ausdruck berechnet, um ein Objekt zu erhalten, und dann wird expression Jedes Element einmal ausführen code.
#!/usr/bin/ruby # -*- coding: UTF-8 -*- for i in 0..5 puts "The value of the local variable is #{i}" end
Hier haben wir den Bereich 0.. definiert5. Anweisung 'for i in 0..5 Ermöglicht dem Wert von i von 0 bis 5Enthält 5)
Die obige Beispiel-Ausgabe ist:
Der Wert der lokalen Variablen ist 0 The value of the local variable is 1 The value of the local variable is 2 The value of the local variable is 3 The value of the local variable is 4 The value of the local variable is 5
for...in Der Schleifenzyklus ist fast vollständig äquivalent zu:
(expression).each do |variable[, variable...]| code end
Der 'for'-Schleifenzyklus erstellt jedoch keine neue Gültigkeitsbereiche für lokale Variablen.
In der Syntax kann 'do' weggelassen werden. Wenn jedoch ein Zeilenübergreifendes 'for'-Format geschrieben werden soll, muss 'do' zwischen der Bedingung oder dem Programmcode stehen.
#!/usr/bin/ruby # -*- coding: UTF-8 -*- (0..5).each do |i| puts "The value of the local variable is #{i}" end
Die obige Beispiel-Ausgabe ist:
Der Wert der lokalen Variablen ist 0 The value of the local variable is 1 The value of the local variable is 2 The value of the local variable is 3 The value of the local variable is 4 The value of the local variable is 5
break
Beendet den innersten Schleifenblock. Wenn im Block aufgerufen, wird der Methode des Blocks beendet (Methode gibt nil zurück).
#!/usr/bin/ruby # -*- coding: UTF-8 -*- for i in 0..5 if i > 2 dann break end puts "The value of the local variable is #{i}" end
Die obige Beispiel-Ausgabe ist:
Der Wert der lokalen Variablen ist 0 The value of the local variable is 1 The value of the local variable is 2
next
Springt zur nächsten Iteration der Schleife. Wenn im Block aufgerufen, wird die Ausführung des Blocks beendet (yield Das Ausdruck zurückgibt nil).
#!/usr/bin/ruby # -*- coding: UTF-8 -*- for i in 0..5 if i < 2 dann next end puts "The value of the local variable is #{i}" end
Die obige Beispiel-Ausgabe ist:
The value of the local variable is 2 The value of the local variable is 3 The value of the local variable is 4 The value of the local variable is 5
redo
Führt die aktuelle Iteration des innersten Schleifenblocks neu ohne die Schleifenbedingung zu überprüfen aus. Wenn im Block aufgerufen, beginnt neu yield oder call.
#!/usr/bin/ruby # -*- coding: UTF-8 -*- for i in 0..5 if i < 2 dann puts "The value of the local variable is #{i}" redo end end
This will produce the following result and enter an infinite loop:
Der Wert der lokalen Variablen ist 0 Der Wert der lokalen Variablen ist 0 ............................
Hinweis:1.9und späteren Versionen wird die Verwendung von 'retry' in Schleifen nicht unterstützt.
retry
wenn retry Wenn 'begin' Ausdruck in der 'rescue' Unterklausel auftritt, beginnt der 'begin' Hauptteil von vorne neu.
begin do_something # Thrown exception rescue # Error Handling retry # Restart from begin end
If retry appears within an iteration, block, or the body of a for expression, the iteration will restart. The iteration parameters will be re-evaluated.
for i in 1..5 retry if some_condition # Restart from i == 1 Start end
#!/usr/bin/ruby # -*- coding: UTF-8 -*- for i in 1..5 retry if i > 2 puts "The value of the local variable is #{i}" end
This will produce the following result and enter an infinite loop:
The value of the local variable is 1 The value of the local variable is 2 The value of the local variable is 1 The value of the local variable is 2 The value of the local variable is 1 The value of the local variable is 2 ............................