Estaba buscando específicamente indexar en un bucle, ninguna de estas soluciones hace que sea inmediatamente obvio cómo hacerlo. el operador traicionó sus intenciones con array.length en el código ...
jheriko
6
Lea mi respuesta con atención. Hay una solución de bucle con indexación incluida.
Eimantas
8
Muchas veces, eaches genial. Pero a veces solo quiero un maldito bucle tradicional. A veces, el "modo Ruby" puede ser simplemente molesto.
Ruben Martinez Jr.
1
¿Cómo configuro manualmente el índice en ruby para poder escribir una clasificación yo mismo?
Muhammad Umer
6
¿Qué pasa si quiero omitir las próximas dos iteraciones
Muhammad Umer
77
limit = array.length;
for counter in0..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
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.
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
fuente
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.
fuente
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
fuente
La equivalencia sería
for i in (0...array.size) end
o
(0...array.size).each do |i| end
o
i = 0 while i < array.size do array[i] i = i + 1 # where you may freely set i to any value end
fuente
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
fuente
each
sino más bieneach_index
. +1Para iterar un bucle un número fijo de veces, intente:
n.times do #Something to be done n times end
fuente
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
fuente
¿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
fuente
['foo', 'bar', 'baz'].each_with_index {|j, i| puts "#{i} #{j}"}
fuente
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.
fuente