有没有办法获取迭代器的位置(它迭代了多少次)?
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
使用 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
(和其他方法)结合使用以产生有趣的结果。