Home » Ruby » Syntax for a for loop in ruby

Syntax for a for loop in ruby

Posted by: admin November 30, 2017 Leave a comment

Questions:

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

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

}
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

Questions:
Answers:
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

Questions:
Answers:

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

Questions:
Answers:
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

Questions:
Answers:

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

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

Questions:
Answers:

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

Questions:
Answers:

If you don’t need to access your array, (just a simple for loop) you can use upto or each :

Upto:

1.9.3p392 :030 > 2.upto(4) {|i| puts i}
2
3
4
 => 2 

Each:

1.9.3p392 :031 > (2..4).each {|i| puts i}
2
3
4
 => 2..4 

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

Questions:
Answers:

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

Questions:
Answers:

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.