有没有办法获得迭代器的位置(它迭代了多少次)?
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
答案 0 :(得分:9)
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
(及其他方法)结合使用,以产生有趣的结果。