是否有可能在Ruby中检查迭代器的位置?

时间:2012-06-22 12:56:59

标签: ruby foreach iterator ruby-1.9.2

有没有办法获得迭代器的位置(它迭代了多少次)?

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

或者您必须明确计算:

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

有更清洁的方法吗?

Ruby 1.9.2

1 个答案:

答案 0 :(得分:9)

使用each_with_index

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

或者您可以使用更酷的替代方案

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

我称之为较冷,因为#with_index知之甚少,可以与map(及其他方法)结合使用,以产生有趣的结果。