Ruby proporciona medios adecuados para la construcción de bucles, aunque veremos en el siguiente capítulo que si se aprende a utilizar los iteradores a menudo hace innecesario su utilización explícita.
Un while es un if repetido. Se ha utilizado en nuestros programas acertijo adivina-palabra y en las expresiones regulares (ver el capítulo anterior); allí tomaba la forma while condición ... end que rodeaba el código a repetir mientras la condición fuera cierta. Pero while e if se pueden aplicar fácilmente a sentencias individuales:
ruby> i = 0 0 ruby> print "Es cero.\n" if i == 0 Es cero. nil ruby> print "Es negativo\n" if i < 0 nil ruby> print "#{i+=1}\n" while i < 3 1 2 3 nil |
Existen cuatro formas de interrumpir el progreso de un bucle desde su interior. La primera break, como en C, sale completamente del bucle. La segunda next salta al principio de la siguiente iteración del bucle (se corresponde con la sentencia continue del C). La tercera redo reinicia la iteración en curso. A continuación se muestra un extracto de código en C que ilustra el significado de break, next, y redo:
La cuarta forma de salir del interior de un bucle es return. La evaluación de return provoca la salida no sólo del bucle sino también del método que contiene el bucle. Si se le pasa un argumento, lo devolverá como retorno de la llamada al método, si no el retorno será nil.