English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Ruby 循环

Les boucles en Ruby sont utilisées pour exécuter un bloc de code plusieurs fois. Cette section présente en détail toutes les expressions de boucle prises en charge par Ruby.

Ruby tant que instruction

grammaire

tant que conditionnelle [faire]
   code
end

code until conditionnelle

grammaire

tant que conditionnelle [:]
   code
end

end until conditionnelle conditionnelle lorsque vrai, exécuter code.

Dans la syntaxe, do ou : peuvent être omis. Cependant, pour écrire une expression while sur une seule ligne, il est nécessaire de séparer l'expression ou le bloc de code avec do ou :.

在线示例

#!/usr/bin/ruby
# -*- 编码:UTF-8 -*-
$i = 0
$num = 5
tant que $i < $num faire
   puts("Dans l'instruction de boucle i = #$i")
   $i +=1
end

Les résultats de sortie des exemples ci-dessus sont les suivants :

dans l'instruction de boucle i = 0
dans l'instruction de boucle i = 1
dans l'instruction de boucle i = 2
dans l'instruction de boucle i = 3
dans l'instruction de boucle i = 4

Ruby tant que until $i > $num do

grammaire

code tant que condition
code until conditionnelle
begin 
  code 
finir tant que conditionnelle

end until conditionnelle conditionnelle lorsque vrai, exécuter code.

si tant que until rescue le modificateur suit un begin ou la clause ensurecode après l'instruction conditionnelle vérifie une fois avant l'exécution.

在线示例

#!/usr/bin/ruby
# -*- 编码:UTF-8 -*-
$i = 0
$num = 5
begin
   puts("Dans l'instruction de boucle i = #$i")
   $i +=1
finir tant que $i < $num

Les résultats de sortie des exemples ci-dessus sont les suivants :

dans l'instruction de boucle i = 0
dans l'instruction de boucle i = 1
dans l'instruction de boucle i = 2
dans l'instruction de boucle i = 3
dans l'instruction de boucle i = 4

Ruby est faux, exécute instruction

grammaire

jusqu'à condition [faire]
   code
end

end until conditionnelle conditionnelle 为假时,执行 code.

在线示例

#!/usr/bin/ruby
# -*- 编码:UTF-8 -*-
$i = 0
$num = 5
Dans la grammaire, do peut être omis. Mais pour écrire une expression until en une ligne, il est nécessaire de séparer l'expression de condition ou le bloc de programme avec do.
   puts("Dans l'instruction de boucle i = #$i")
   $i +=1;
end

Les résultats de sortie des exemples ci-dessus sont les suivants :

dans l'instruction de boucle i = 0
dans l'instruction de boucle i = 1
dans l'instruction de boucle i = 2
dans l'instruction de boucle i = 3
dans l'instruction de boucle i = 4
dans l'instruction de boucle i = 5

Ruby est faux, exécute until $i > $num do

grammaire

modificateur
code until conditionnelle
begin
   code
ou

end until conditionnelle conditionnelle quand code.

si est faux, exécute until rescue le modificateur suit un begin ou la clause ensurecode après l'instruction conditionnelle vérifie une fois avant l'exécution.

在线示例

#!/usr/bin/ruby
# -*- 编码:UTF-8 -*-
$i = 0
$num = 5
begin
   puts("Dans l'instruction de boucle i = #$i")
   $i +=1;
end until $i > $num

Les résultats de sortie des exemples ci-dessus sont les suivants :

dans l'instruction de boucle i = 0
dans l'instruction de boucle i = 1
dans l'instruction de boucle i = 2
dans l'instruction de boucle i = 3
dans l'instruction de boucle i = 4
dans l'instruction de boucle i = 5

Ruby for instruction

grammaire

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

d'abord calcule l'expression pour obtenir un objet, puis exécute expression exécute une fois chaque élément code.

在线示例

#!/usr/bin/ruby
# -*- 编码:UTF-8 -*-
pour i en 0..5
   puts "局部变量的值为 #{i}"
end

ici, nous avons défini la plage 0..5.L'instruction for i en 0..5 permet à la valeur de i de varier de 0 à 5(compris 5).

Les résultats de sortie des exemples ci-dessus sont les suivants :

la valeur de la variable locale 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 un nouveau domaine d'application pour les variables locales.

Dans la grammaire, do peut être omis. Mais pour écrire une boucle for en une ligne, il est nécessaire de séparer l'expression de condition ou le bloc de programme avec do.

在线示例

#!/usr/bin/ruby
# -*- 编码:UTF-8 -*-
(0..5).each do |i|
   puts "局部变量的值为 #{i}"
end

Les résultats de sortie des exemples ci-dessus sont les suivants :

la valeur de la variable locale est 0
局部变量的值为 1
局部变量的值为 2
局部变量的值为 3
局部变量的值为 4
局部变量的值为 5

Ruby break instruction

grammaire

break

termine le cycle le plus interne. Si appelé à l'intérieur d'un bloc, il termine la méthode associée au bloc (la méthode retourne nil).

在线示例

#!/usr/bin/ruby
# -*- 编码:UTF-8 -*-
pour i en 0..5
   si i > 2 alors
      break
   end
   puts "局部变量的值为 #{i}"
end

Les résultats de sortie des exemples ci-dessus sont les suivants :

la valeur de la variable locale est 0
局部变量的值为 1
局部变量的值为 2

Ruby next instruction

grammaire

next

Passer à l'itération suivante de la boucle. Si appelé à l'intérieur d'un bloc, il termine l'exécution du bloc (yield l'expression retourne nil).

在线示例

#!/usr/bin/ruby
# -*- 编码:UTF-8 -*-
pour i en 0..5
   si i < 2 alors
      next
   end
   puts "局部变量的值为 #{i}"
end

Les résultats de sortie des exemples ci-dessus sont les suivants :

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

Ruby redo instruction

grammaire

redo

redémarre l'itération actuelle du cycle le plus interne sans vérifier la condition de boucle. Si appelé à l'intérieur d'un bloc, il redémarre yield ou appeler.

在线示例

#!/usr/bin/ruby
# -*- 编码:UTF-8 -*-
pour i en 0..5
   si i < 2 alors
      puts "局部变量的值为 #{i}"
      redo
   end
end

这将产生以下结果,并会进入一个无限循环:

la valeur de la variable locale est 0
la valeur de la variable locale est 0
............................

Ruby retry instruction

Attention :1.9et les versions suivantes ne supportent pas l'utilisation de retry dans les boucles.

grammaire

retry

si retry Si appear dans la clause rescue de l'expression begin, elle redémarre à partir du début du corps begin.

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

如果 retry 出现在迭代内、块内或者 for 表达式的主体内,则重新开始迭代调用。迭代的参数会重新评估。

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

在线示例

#!/usr/bin/ruby
# -*- 编码:UTF-8 -*-
for i in 1..5
   retry if  i > 2
   puts "局部变量的值为 #{i}"
end

这将产生以下结果,并会进入一个无限循环:

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