How do I do this type of for loop in Ruby?
for(int i=0; i<array.length; i++) { } 210 Answers
array.each do |element| element.do_stuff end or
for element in array do element.do_stuff end If you need index, you can use this:
array.each_with_index do |element,index| element.do_stuff(index) end 7limit = array.length; for counter in 0..limit --- make some actions --- end the other way to do that is the following
3.times do |n| puts n; end thats will print 0, 1, 2, so could be used like array iterator also
Think that variant better fit to the author's needs
I keep hitting this as a top link for google "ruby for loop", so I wanted to add a solution for loops where the step wasn't simply '1'. For these cases, you can use the 'step' method that exists on Numerics and Date objects. I think this is a close approximation for a 'for' loop.
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 0The equivalence would be
for i in (0...array.size) end or
(0...array.size).each do |i| end or
i = 0 while i < array.size do array[i] i = i + 1 # where you may freely set i to any value end array.each_index do |i| ... end It's not very Rubyish, but it's the best way to do the for loop from question in Ruby
1To iterate a loop a fixed number of times, try:
n.times do #Something to be done n times end 0If you don't need to access your array, (just a simple for loop) you can use upto or each :
Upto:
2.upto(4) {|i| puts i} 2 3 4 Each:
(2..4).each {|i| puts i} 2 3 4 What? From 2010 and nobody mentioned Ruby has a fine for /in loop (it's just nobody uses it):
ar = [1,2,3,4,5,6] for item in ar puts item end 1['foo', 'bar', 'baz'].each_with_index {|j, i| puts "#{i} #{j}"} Ruby's enumeration loop syntax is different:
collection.each do |item| ... end This reads as "a call to the 'each' method of the array object instance 'collection' that takes block with 'blockargument' as argument". The block syntax in Ruby is 'do ... end' or '{ ... }' for single line statements.
The block argument '|item|' is optional but if provided, the first argument automatically represents the looped enumerated item.