metodo - Sintaxis para un bucle for en ruby
sintaxis ruby (10)
¿Cómo hago este tipo de bucle for en Ruby?
for(int i=0; i<array.length; i++) {
}
¿Qué? A partir de 2010, nadie mencionó que Ruby tiene una multa por / in loop (es solo que nadie lo usa):
ar = [1,2,3,4,5,6]
for item in ar
puts item
end
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
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 ''cada'' 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 una sola línea.
El argumento de bloque ''| item |'' es opcional, pero si se proporciona, el primer argumento representa automáticamente el elemento enumerado en bucle.
Para iterar un bucle un número fijo de veces, intente:
n.times do
#Something to be done n times
end
Si no necesita acceder a su matriz , (solo un simple bucle para) puede usar upto 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
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 fuera simplemente ''1''. Para estos casos, puede utilizar el método de ''paso'' que existe en los objetos Numerics y Date. 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 do |element|
element.do_stuff
end
o
for element in array do
element.do_stuff
end
Si necesitas índice, puedes usar esto:
array.each_with_index do |element,index|
element.do_stuff(index)
end
array.each_index do |i|
...
end
No es muy Ruby, pero es la mejor manera de hacer el bucle for de la pregunta en Ruby
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 un iterador de matrices
Creo que esa variante se ajusta mejor a las necesidades del autor.
[''foo'', ''bar'', ''baz''].each_with_index {|j, i| puts "#{i} #{j}"}