Boucle rubis


Les boucles en Ruby sont utilisées pour exécuter plusieurs fois le même bloc de code. Ce chapitre fournira une introduction détaillée à toutes les instructions de boucle prises en charge par Ruby.

Instruction Ruby while

syntaxe

while conditional [do]
   code
end

ou

<pre>
while conditional [:]
   code
end

exécutée lorsque conditionnel est vrai code.

Dans la syntaxe, do ou : peuvent être omis. Mais si vous souhaitez écrire l'expression while sur une seule ligne, vous devez séparer l'expression conditionnelle ou le bloc de programme par do ou :.

Instance

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-

$i = 0
$num = 5

while $i < $num  do
   puts("在循环语句中 i = #$i" )
   $i +=1
end


Le résultat de sortie de l'exemple ci-dessus est :

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

Ruby whileModificateur

Syntaxe

code while condition

或者

begin 
  code 
end while conditional

Lorsque conditionnel est vrai, exécutez le code.

Si le modificateur while suit une instruction begin sans rescue ou clause Ensure, le code sera exécuté une fois avant Le conditionnel est jugé.

Instance

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-

$i = 0
$num = 5
begin
   puts("在循环语句中 i = #$i" )
   $i +=1
end while $i < $num


Le résultat de sortie de l'exemple ci-dessus est :

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

Ruby jusqu'à Déclaration

until conditional [do]
   code
end

Lorsque conditionnel est faux, exécutez le code.

Dans la syntaxe, do peut être omis. Mais si vous souhaitez écrire la formule jusqu'à sur une seule ligne, vous devez séparer l'expression conditionnelle ou le bloc de programme par do.

Instance

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-

$i = 0
$num = 5

until $i > $num  do
   puts("在循环语句中 i = #$i" )
   $i +=1;
end


Le résultat de sortie de l'exemple ci-dessus est :

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

Ruby jusqu'àModificateur

Syntaxe

code until conditional

或者

begin
   code
end until conditional

Lorsque conditionnel est faux, exécutez le code.

Si le modificateur jusqu'à suit une instruction begin sans rescue ou clause de garantie, le code sera exécuté une fois avant Le conditionnel est jugé.

Instance

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-

$i = 0
$num = 5
begin
   puts("在循环语句中 i = #$i" )
   $i +=1;
end until $i > $num


Le résultat de sortie de l'exemple ci-dessus est :

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

Ruby for Statement

Syntaxe

for variable [, variable ...] in expression [do]
   code
end

Calculez d'abord l'expression pour obtenir un objet, puis exécutez le code une fois pour chaque élément de expression.

Instance

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-

for i in 0..5
   puts "局部变量的值为 #{i}"
end

Ici, nous avons défini la plage 0..5. L'instruction pour i en 0..5 autorise les valeurs de i de 0 à 5 inclus.


Le résultat de sortie de l'exemple ci-dessus est :

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

for...in La boucle est presque complètement équivalente à :

(expression).each do |variable[, variable...]| code end

Cependant, la boucle for ne crée pas de nouvelle portée pour les variables locales.

Dans la syntaxe, do peut être omis. Mais si vous souhaitez écrire la formule for sur une seule ligne, vous devez séparer l'expression conditionnelle ou le bloc de programme par do.

Instance

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-

(0..5).each do |i|
   puts "局部变量的值为 #{i}"
end


Le résultat de sortie de l'exemple ci-dessus est :

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

Ruby break Déclaration

Syntaxe

break

Termine la boucle la plus interne. S'il est appelé dans un bloc, termine la méthode du bloc concerné (la méthode renvoie zéro).

Instance

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-

for i in 0..5
   if i > 2 then
      break
   end
   puts "局部变量的值为 #{i}"
end


Le résultat de sortie de l'exemple ci-dessus est :

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

Ruby next Statement

Syntaxe

next

Passer à l'itération suivante de la boucle. S'il est appelé dans un bloc, termine l'exécution du bloc (l'expression yield renvoie zéro).

Exemple

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-

for i in 0..5
   if i < 2 then
      next
   end
   puts "局部变量的值为 #{i}"
end


Le résultat de sortie de l'exemple ci-dessus est :

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

Ruby redo Statement

Syntaxe

redo

Redémarre l'itération de la boucle la plus interne sans vérifier la condition de la boucle. Si vous êtes appelé dans un bloc, redémarrez yield ou call.

Instance

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-

for i in 0..5
   if i < 2 then
      puts "局部变量的值为 #{i}"
      redo
   end
end

Cela produira les résultats suivants et entrera dans une boucle infinie :

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

Ruby retry Statement

Remarque : les versions 1.9 et ultérieures ne prennent pas en charge l'utilisation de nouvelles tentatives en boucle.

Syntaxe

retry

Si retry apparaît dans la clause de sauvetage d'une expression de début, redémarrez depuis le début du corps de début.

begin
   do_something   # 抛出的异常
rescue
   # 处理错误
   retry          # 重新从 begin 开始
end

Redémarrez l'appel d'itération si une nouvelle tentative se produit dans une itération, dans un bloc ou dans le corps d'une expression for. Les paramètres d'itération sont réévalués.

for i in 1..5
   retry if some_condition # 重新从 i == 1 开始
end

Instance

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-

for i in 1..5
   retry if  i > 2
   puts "局部变量的值为 #{i}"
end

Cela produira les résultats suivants et entrera dans une boucle infinie :

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