English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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.
tant que conditionnelle [faire] code end
code until conditionnelle
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
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
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
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
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
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
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
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 ............................
Attention :1.9et les versions suivantes ne supportent pas l'utilisation de retry dans les boucles.
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 ............................