¿Cómo hago este tipo de bucle for en Ruby?Sintaxis de un bucle for en ruby
for(int i=0; i<array.length; i++) {
}
¿Cómo hago este tipo de bucle for en Ruby?Sintaxis de un bucle for en ruby
for(int i=0; i<array.length; i++) {
}
array.each do |element|
element.do_stuff
end
o
for element in array do
element.do_stuff
end
Si necesita índice, puede utilizar esto:
array.each_with_index do |element,index|
element.do_stuff(index)
end
estaba buscando específicamente la indexación en un bucle, ninguna de estas soluciones hace que sea inmediatamente obvio cómo hacerlo. el op traicionó sus intenciones con array.length en el código ... – jheriko
Lea mi respuesta detenidamente. Hay una solución de bucle con indexación incluida. – Eimantas
¿Esto siempre estuvo ahí? salta y me muerde en la nariz ... – jheriko
['foo', 'bar', 'baz'].each_with_index {|j, i| puts "#{i} #{j}"}
array.each_index do |i|
...
end
No es muy Rubyish, pero es la mejor manera de hacer el bucle de la pregunta en Ruby
Esto es brillante. Es cierto que la respuesta no es 'cada' sino 'each_index'. +1 –
limit = array.length;
for counter in 0..limit
--- make some actions ---
end
la otra manera de hacerlo es la siguiente
3.times do |n|
puts n;
end
eso se imprimirá 0, 1, 2, por lo que podría ser utilizado como gama iterador también
Piense que la variante mejor ajuste a las necesidades del autor
¿Qué? A partir de 2010 y nadie ha mencionado Ruby tiene una multa por/en bucle (es sólo que nadie lo usa):
ar = [1,2,3,4,5,6]
for item in ar
puts item
end
Una de las ventajas de * .each ... do * es que el bloque temporal cae fuera del alcance al final del ciclo, mientras que * para ... in * deja el ámbito temporal. –
Si no es necesario acceder a la matriz, (sólo un simple bucle for) que pueda utilizar upto o cada uno:
Upto:
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
Sigo golpeando esto como un enlace superior para google "ruby for loop", así que quería agregar una solución para bucles donde el paso no era simplemente '1'. Para estos casos, puede usar el método 'paso' que existe en los objetos Numerics y Date. Creo que esta es una aproximación cercana para un ciclo 'para'.
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
+1, gracias. Estaba buscando una buena manera de contar ... –
Para repetir un bucle un número determinado de veces, pruebe:
n.times do
#Something to be done n times
end
Esto funciona cuando se necesita usar el índice: 3.times do | i | – tobixen
sintaxis del bucle de enumeración de Ruby es diferente:
collection.each do |item|
...
end
Esto lee como "una llamada a la 'cada uno 'método de la' colección 'de instancia de objeto de matriz que toma el bloque con' argumento de bloque 'como argumento ". La sintaxis de bloque en Ruby es 'do ... end' o '{...}' para sentencias de línea única.
El argumento de bloque '| item |' es opcional, pero si se proporciona, el primer argumento representa automáticamente el elemento enumerado en bucle.
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
@johannes leer un libro es una buena idea, pero preferiblemente no uno sobre Ruby 1.6! –
No olvides echar un vistazo a algunos métodos útiles en [ruby-doc: módulo Enumerable] (http://www.ruby-doc.org/core/classes/Enumerable.html). –