B S*_*ven 1 ruby foreach iterator ruby-1.9.2
有没有办法获得迭代器的位置(它迭代了多少次)?
values = (1..100)
values.each do |value|
if ... % 10 == 1 then puts iterator.count end
end
Run Code Online (Sandbox Code Playgroud)
或者你必须明确指望:
values = (1..100)
counter = 0
values.each do |value|
if counter % 10 == 1 then puts counter end
counter += 1
end
Run Code Online (Sandbox Code Playgroud)
有更清洁的方法吗?
Ruby 1.9.2
values.each_with_index do |value, idx|
puts idx if idx % 10 == 1
# do something else
end
Run Code Online (Sandbox Code Playgroud)
或者你可以使用更酷的替代品
values.each.with_index do |value, idx|
# work
end
Run Code Online (Sandbox Code Playgroud)
我把它称为冷却因为#with_index相对较少知道它可以与map(和其他方法)结合产生有趣的结果.