Ruby Bucles

Los bucles en Ruby se utilizan para ejecutar el mismo bloque de código varias veces. Este capítulo detallará todas las sentencias de bucle que admite Ruby.

Ruby whileSentencia

Sintaxis

while conditional [do] code end

o

Sintaxis

while conditional [:] code end

Cuandoconditionalejecutar mientras sea verdaderocode。

En la sintaxis, se pueden omitir do o :. Pero para escribir una expresión while en una sola línea, debes separar la condición o el bloque de código con do o :.

Ejemplo

#!/usr/bin/ruby # -*- coding: UTF-8 -*- $i = 0 $num = 5 while $i < $num do puts("En la sentencia de bucle, i = #$i" ) $i +=1 end

Pruébalo »

El resultado del ejemplo anterior es:

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

Ruby whileModificador

Sintaxis

code while conditionobegin code end while conditional

Cuandoconditionalejecutar mientras sea verdaderocode。

Siwhileel modificador sigue a una sentencia sinrescueo cláusula ensurebegindespués de la sentenciacodeseconditionalejecutará una vez antes de la comprobación.

Ejemplo

#!/usr/bin/ruby # -*- coding: UTF-8 -*- $i = 0 $num = 5 begin puts("En la sentencia de bucle, i = #$i" ) $i +=1 end while $i < $num

Pruébalo »

El resultado del ejemplo anterior es:

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

Ruby untilSentencia

Sintaxis

until conditional [do] code end

Cuandoconditionalejecutar mientras sea falsocode。

En la sintaxis, se puede omitir do. Pero para escribir una expresión until en una sola línea, debes separar la condición o el bloque de código con do.

Ejemplo

#!/usr/bin/ruby # -*- coding: UTF-8 -*- $i = 0 $num = 5 until $i > $num do puts("En la sentencia de bucle, i = #$i" ) $i +=1; end

Pruébalo »

El resultado del ejemplo anterior es:

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

Ruby untilModificador

Sintaxis

code until conditionalobegin code end until conditional

Cuandoconditionalejecutar cuando sea falsecode。

Siuntilel modificador sigue a una sentencia sinrescueo cláusula ensurebegindespués de la sentenciacodeseconditionalejecutará una vez antes de la comprobación.

Ejemplo

#!/usr/bin/ruby # -*- coding: UTF-8 -*- $i = 0 $num = 5 begin puts("En la sentencia de bucle, i = #$i" ) $i +=1; end until $i > $num

Pruébalo »

El resultado del ejemplo anterior es:

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

Ruby forSentencia

Sintaxis

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

Primero se evalúa la expresión para obtener un objeto y, a continuación, paraexpressioncada elemento del mismo se ejecuta una vez.code。

Ejemplo

#!/usr/bin/ruby # -*- coding: UTF-8 -*- for i in 0..5 puts "El valor de la variable local es #{i}" end

Pruébalo »

Aquí, hemos definido el rango 0..5. La sentencia for i in 0..5 permite que el valor de i vaya de 0 a 5 (incluido 5).

El resultado del ejemplo anterior es:

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

for...inEl bucle es casi completamente equivalente a:

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

Sin embargo, el bucle for no crea un nuevo ámbito para las variables locales.

En la sintaxis, se puede omitir do. Pero para escribir una expresión for en una sola línea, debes separar la condición o el bloque de código con do.

Ejemplo

#!/usr/bin/ruby # -*- coding: UTF-8 -*- (0..5).each do |i| puts "El valor de la variable local es #{i}" end

Pruébalo »

El resultado del ejemplo anterior es:

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

Ruby breakSentencia

Sintaxis

break

Termina el bucle más interno. Si se llama dentro de un bloque, termina el método relacionado con el bloque (el método devuelve nil).

Ejemplo

#!/usr/bin/ruby # -*- coding: UTF-8 -*- for i in 0..5 if i > 2 then break end puts "El valor de la variable local es #{i}" end

Pruébalo »

El resultado del ejemplo anterior es:

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

Ruby nextSentencia

Sintaxis

next

Salta a la siguiente iteración del bucle. Si se llama dentro de un bloque, termina la ejecución del bloque (layieldexpresión devuelve nil).

Ejemplo

#!/usr/bin/ruby # -*- coding: UTF-8 -*- for i in 0..5 if i < 2 then next end puts "El valor de la variable local es #{i}" end

Pruébalo »

El resultado del ejemplo anterior es:

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

Ruby redoSentencia

Sintaxis

redo

Reinicia la iteración actual del bucle más interno sin comprobar la condición del bucle. Si se llama dentro de un bloque, reiniciayieldocall。

Ejemplo

#!/usr/bin/ruby # -*- coding: UTF-8 -*- for i in 0..5 if i < 2 then puts "El valor de la variable local es #{i}" redo end end

Esto producirá el siguiente resultado y entrará en un bucle infinito:

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

Ruby retrySentencia

Nota: las versiones 1.9 y posteriores no admiten el uso de retry en bucles.

Sintaxis

retry

Siretryaparece en una cláusula rescue de una expresión begin, se reinicia desde el principio del cuerpo de begin.

begin do_something #La excepción lanzada rescue #Manejar el error retry #Reiniciar desde begin end

Si retry aparece dentro de una iteración, dentro de un bloque o en el cuerpo de una expresión for, se reinicia la llamada de iteración. Los argumentos de la iteración se reevalúan.

for i in 1..5 retry if some_condition #Reiniciar desde i == 1 end

Ejemplo

#!/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:

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