¿Cómo hago este tipo de bucle for en Ruby?
for(int i=0; i<array.length; i++) {
}
¿Cómo hago este tipo de bucle for en Ruby?
for(int i=0; i<array.length; i++) {
}
Respuestas:
array.each do |element|
element.do_stuff
end
o
for element in array do
element.do_stuff
end
Si necesita un índice, puede usar esto:
array.each_with_index do |element,index|
element.do_stuff(index)
end
each
es genial. Pero a veces solo quiero un maldito bucle tradicional. A veces, el "modo Ruby" puede ser simplemente molesto.
limit = array.length;
for counter in 0..limit
--- make some actions ---
end
la otra forma de hacerlo es la siguiente
3.times do |n|
puts n;
end
eso imprimirá 0, 1, 2, por lo que también podría usarse como iterador de matriz
Piense que esa variante se ajusta mejor a las necesidades del autor.
Sigo presionando esto como un enlace superior para google "ruby for loop", así que quería agregar una solución para los bucles donde el paso no era simplemente '1'. Para estos casos, puede usar el método 'paso' que existe en los objetos Numéricos y Fecha. Creo que esta es una aproximación cercana para un bucle 'for'.
start = Date.new(2013,06,30)
stop = Date.new(2011,06,30)
# step back in time over two years, one week at a time
start.step(stop, -7).each do |d|
puts d
end
array.each_index do |i|
...
end
No es muy Rubyish, pero es la mejor manera de hacer el bucle for de la pregunta en Ruby
each
sino más bien each_index
. +1
Si no necesita acceder a su matriz , (solo un bucle for simple) puede usar hasta o cada uno:
Hasta:
1.9.3p392 :030 > 2.upto(4) {|i| puts i}
2
3
4
=> 2
Cada:
1.9.3p392 :031 > (2..4).each {|i| puts i}
2
3
4
=> 2..4
¿Qué? Desde 2010 y nadie mencionó que Ruby tiene un bucle for / in fine (es solo que nadie lo usa):
ar = [1,2,3,4,5,6]
for item in ar
puts item
end
La sintaxis del bucle de enumeración de Ruby es diferente:
collection.each do |item|
...
end
Esto se lee como "una llamada al método 'each' de la instancia de objeto de matriz 'colección' que toma un bloque con 'blockargument' como argumento". La sintaxis de bloque en Ruby es 'do ... end' o '{...}' para declaraciones de una sola línea.
El argumento de bloque '| elemento |' es opcional, pero si se proporciona, el primer argumento representa automáticamente el elemento enumerado en bucle.