Question

Is there a way to get the position of an iterator (how many times it has iterated)?

values = (1..100)
values.each do |value|
  if ... % 10 == 1 then puts iterator.count end
end

Or do you have to count explicitly:

values = (1..100)
counter = 0
values.each do |value|
  if counter % 10 == 1 then puts counter end
  counter += 1
end

Is there a cleaner approach?

Ruby 1.9.2

Was it helpful?

Solution

Use each_with_index

values.each_with_index do |value, idx|
  puts idx if idx % 10 == 1
  # do something else
end

Or you can use a cooler alternative

values.each.with_index do |value, idx|
  # work
end

I called it cooler because #with_index is relatively less known and it can be combined with map (and other methods) to yield interesting results.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top