Uma das coisas que mais me confundiu a cabeça quando comecei a aprender Ruby foram os loops. Vindo de Java e C, não me entrava na cabeça como uma coisa simples como um loop poderia ser escrito de tantas maneiras diferentes. Isso simplesmente não parecia certo pra mim. Passado um bom tempo, comecei a compreender essa liberdade dada ao programador e a creditar isso ao poder e dinamicidade do Ruby.
Por curiosidade, resolvi tentar descobri todas as maneiras possíveis de se executar um loop com Ruby, e tentarei lista-las aqui.
While
Loops do tipo While no Ruby são exatamente iguais aos encontrados em Java, C# e outros. Um bloco deve ser executado enquanto uma condição for verdadeira.
x = 1 while(x <4) puts x x +=1 end => 1 2 3
O while também pode ser usado ao final de um bloco, de maneira semelhando ao “DO…WHILE” de outras linguagens.
x =1 begin puts x x+=1 end while (x<4) => 1 2 3
Irmão inverso do while, o until executa um bloco de código até que uma condição seja verdadeira.
x = 1 until(x>3) puts x x +=1 end => 1 2 3
E, como no while, também pode ser usado como condição de execução ao fim de um bloco.
x = 1 begin puts x x+=1 end until (x>3) => 1 2 3

