Syntax for a for loop in ruby

RubySyntax

Ruby Problem Overview


How do I do this type of for loop in Ruby?

for(int i=0; i<array.length; i++) {

}

Ruby Solutions


Solution 1 - Ruby

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

Solution 2 - Ruby

limit = 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

Solution 3 - Ruby

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

Solution 4 - Ruby

The 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

Solution 5 - Ruby

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

Solution 6 - Ruby

To iterate a loop a fixed number of times, try:

n.times do
  #Something to be done n times
end

Solution 7 - Ruby

If 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

Solution 8 - Ruby

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

Solution 9 - Ruby

['foo', 'bar', 'baz'].each_with_index {|j, i| puts "#{i} #{j}"}

Solution 10 - Ruby

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.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionDNB5brimsView Question on Stackoverflow
Solution 1 - RubyEimantasView Answer on Stackoverflow
Solution 2 - RubyPh0en1xView Answer on Stackoverflow
Solution 3 - RubydszView Answer on Stackoverflow
Solution 4 - Rubyjsh-cView Answer on Stackoverflow
Solution 5 - RubyEmFiView Answer on Stackoverflow
Solution 6 - RubyytsView Answer on Stackoverflow
Solution 7 - RubyBenjamin CrouzierView Answer on Stackoverflow
Solution 8 - RubysteenslagView Answer on Stackoverflow
Solution 9 - RubyYOUView Answer on Stackoverflow
Solution 10 - RubyJackyJohnsonView Answer on Stackoverflow