English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Las bucles en Ruby se utilizan para ejecutar el mismo bloque de código varias veces. Este capítulo详细介绍Ruby todas las sentencias de bucle soportadas.
mientras la condición [hacer] Ejecutar una vez cada elemento end
modificador
mientras la condición [:] Ejecutar una vez cada elemento end
o Después de la instrucción ejecutar cuando sea verdadero Ejecutar una vez cada elemento.
en la sintaxis, 'hacer' o ':' pueden omitirse. Pero si se desea escribir una estructura 'mientras' en una sola línea, debe separarse la condición o el bloque de código con 'hacer' o ':'.
#!/usr/bin/ruby # -*- coding: UTF-8 -*- Ejecutar una vez antes de que se ejecute. $i = 0 5 mientras $i < $num hacer $num = puts("En la instrucción de bucle i = #$i") +$i1 end
El resultado de la salida del ejemplo anterior es:
end until $i > $num En la instrucción de bucle, i = 0 1 En la instrucción de bucle, i = 0 2 En la instrucción de bucle, i = 0 3 En la instrucción de bucle, i = 0 4
código mientras la condición sea modificador begin Ejecutar una vez cada elemento finalizar mientras la condición sea verdadera
o Después de la instrucción ejecutar cuando sea verdadero Ejecutar una vez cada elemento.
si mientras Es false, ejecutar rescue until begin El modificador sigue a unEjecutar una vez cada elemento o la cláusula ensure Después de la instrucción condicional
#!/usr/bin/ruby # -*- coding: UTF-8 -*- Ejecutar una vez antes de que se ejecute. $i = 0 5 begin $num = puts("En la instrucción de bucle i = #$i") +$i1 finalizar mientras $i < $num
El resultado de la salida del ejemplo anterior es:
end until $i > $num En la instrucción de bucle, i = 0 1 En la instrucción de bucle, i = 0 2 En la instrucción de bucle, i = 0 3 En la instrucción de bucle, i = 0 4
hasta que la condición sea verdadera [hacer] Ejecutar una vez cada elemento end
o Después de la instrucción 为假时,执行 Ejecutar una vez cada elemento.
语法中 do 可以省略不写。但若要在一行内写出 until 式,则必须以 do 隔开条件式或程式区块。
#!/usr/bin/ruby # -*- coding: UTF-8 -*- Ejecutar una vez antes de que se ejecute. $i = 0 5 Es falso, ejecutar $num = puts("En la instrucción de bucle i = #$i") +$i1= end
El resultado de la salida del ejemplo anterior es:
end until $i > $num En la instrucción de bucle, i = 0 1 En la instrucción de bucle, i = 0 2 En la instrucción de bucle, i = 0 3 En la instrucción de bucle, i = 0 4 En la instrucción de bucle, i = 0 5
until $i > $num do modificador begin Ejecutar una vez cada elemento código until condicional
o Después de la instrucción end until condicional Ejecutar una vez cada elemento.
si Cuando Es false, ejecutar rescue until begin El modificador sigue a unEjecutar una vez cada elemento o la cláusula ensure Después de la instrucción condicional
#!/usr/bin/ruby # -*- coding: UTF-8 -*- Ejecutar una vez antes de que se ejecute. $i = 0 5 begin $num = puts("En la instrucción de bucle i = #$i") +$i1= ;
El resultado de la salida del ejemplo anterior es:
end until $i > $num En la instrucción de bucle, i = 0 1 En la instrucción de bucle, i = 0 2 En la instrucción de bucle, i = 0 3 En la instrucción de bucle, i = 0 4 En la instrucción de bucle, i = 0 5
for Ejecutar una vez cada elemento end
for variable [, variable ...] in expression [do] Primero calcule la expresión para obtener un objeto, luego ejecute el expression Ejecutar una vez cada elemento.
#!/usr/bin/ruby # -*- coding: UTF-8 -*- for i in 0..5 puts "El valor de la variable local es #{i}" end
Aquí, ya hemos definido el rango 0..5. La instrucción for i in 0..5 Permite que el valor de i sea de 0 a 5Incluye 5).
El resultado de la salida del ejemplo anterior es:
el valor de la variable local es 0 El valor de la variable local es 1 El valor de la variable local es 2 El valor de la variable local es 3 El valor de la variable local es 4 El valor de la variable local es 5
for...in El bucle es prácticamente equivalente a:
(expression).each do |variable[, variable...]| código end
Sin embargo, el bucle for no crea un nuevo ámbito para las variables locales.
En la gramática, do se puede omitir. Pero si se desea escribir el bucle for en una línea, se debe separar la condición o el bloque de código con do.
#!/usr/bin/ruby # -*- coding: UTF-8 -*- (0..5).each do |i| puts "El valor de la variable local es #{i}" end
El resultado de la salida del ejemplo anterior es:
el valor de la variable local es 0 El valor de la variable local es 1 El valor de la variable local es 2 El valor de la variable local es 3 El valor de la variable local es 4 El valor de la variable local es 5
break
Terminar el bucle más interno. Si se llama dentro de un bloque, se termina el método correspondiente (el método devuelve nil).
#!/usr/bin/ruby # -*- coding: UTF-8 -*- for i in 0..5 if i > 2 entonces break end puts "El valor de la variable local es #{i}" end
El resultado de la salida del ejemplo anterior es:
el valor de la variable local es 0 El valor de la variable local es 1 El valor de la variable local es 2
next
Saltar a la siguiente iteración del bucle. Si se llama dentro de un bloque, se termina la ejecución del bloque (yield La expresión devuelve nil).
#!/usr/bin/ruby # -*- coding: UTF-8 -*- for i in 0..5 if i < 2 entonces next end puts "El valor de la variable local es #{i}" end
El resultado de la salida del ejemplo anterior es:
El valor de la variable local es 2 El valor de la variable local es 3 El valor de la variable local es 4 El valor de la variable local es 5
redo
Reiniciar la iteración actual del bucle más interno sin verificar la condición del bucle. Si se llama dentro de un bloque, se reinicia. yield o llamar.
#!/usr/bin/ruby # -*- coding: UTF-8 -*- for i in 0..5 if i < 2 entonces puts "El valor de la variable local es #{i}" redo end end
Esto producirá el siguiente resultado y entrará en un bucle infinito:
el valor de la variable local es 0 el valor de la variable local es 0 ............................
Nota:1.9y versiones posteriores no admiten el uso de retry en bucles.
retry
si retry Si appears in the rescue clause of the begin expression, it restarts from the beginning of the begin body.
begin do_something # Excepción lanzada rescue # Manejo de errores retry # Volver a comenzar desde begin end
Si retry aparece dentro de un bucle, un bloque o el cuerpo de una expresión for, se vuelve a comenzar la llamada iterativa. Los parámetros de la iteración se evaluarán nuevamente.
for i in 1..5 retry if some_condition # Volver a comenzar desde i == 1 Comenzar end
#!/usr/bin/ruby # -*- coding: UTF-8 -*- for i in 1..5 retry if i > 2 puts "El valor de la variable local es #{i}" end
Esto producirá el siguiente resultado y entrará en un bucle infinito:
El valor de la variable local es 1 El valor de la variable local es 2 El valor de la variable local es 1 El valor de la variable local es 2 El valor de la variable local es 1 El valor de la variable local es 2 ............................