9.3. for

Los programadores en C se estarán preguntando cómo se construye un bucle for. En Ruby, el bucle for es mucho más interesante de lo que cabía esperar. El siguiente bucle se ejecuta una vez por cada elemento de la colección.


for elem in coleccion
  ...
end

La colección puede ser un rango de valores (esto es lo que la mayoría de la gente espera cuando se habla de bucles for):


ruby> for num in (4..6)
ruby|   print num, "\n"
ruby| end
4
5
6
4..6

Puede ser cualquier tipo de colección como por ejemplo un array:


ruby> for elm in [100,-9.6,"pickle"]
ruby|   print "#{elm}\t(#{elm.type})\n"
ruby| end
100     (Fixnum)
-9.6    (Float)
pickle   (String)
[100, -9.6, "pickle"]

Saliéndonos un poco del tema, for es realmente otra forma de escribir each, el cual es nuestro primer ejemplo de iterador. La siguientes dos estructuras son equivalentes:


# Si utilizas C o Java, puedes preferir esta estructura
for i in coleccion
  ..
end

# si utilizas Smalltalk, puedes preferir esta otra
coleccion.each {|i|
  ...
}

Con frecuencia se puede sustituir los bucles convencionales por iteradores y una vez acostumbrado a utilizarlos es generalmente más sencillo tratar con éstos. Por lo tanto, avancemos y aprendamos más sobre ellos.