1

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

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

有更清洁的方法吗?

红宝石 1.9.2

4

1 回答 1

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(和其他方法)结合以产生有趣的结果。

于 2012-06-22T12:58:39.040 回答