可以在Ruby中检查迭代器的位置吗?

可以在Ruby中检查迭代器的位置吗?,ruby,foreach,iterator,ruby-1.9.2,Ruby,Foreach,Iterator,Ruby 1.9.2,有没有办法获得迭代器的位置(它迭代了多少次) 或者你必须明确计算: values = (1..100) counter = 0 values.each do |value| if counter % 10 == 1 then puts counter end counter += 1 end 有没有更干净的方法 Ruby 1.9.2使用 或者你可以用一个更酷的替代品 values.each.with_index do |value, idx| # work 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使用

或者你可以用一个更酷的替代品

values.each.with_index do |value, idx|
  # work
end
我之所以称之为cooler,是因为
#with_index
相对来说不太为人所知,它可以与
map
(和其他方法)相结合,产生有趣的结果。

使用

或者你可以用一个更酷的替代品

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

我之所以称之为cool,是因为
#with_index
相对来说不太为人所知,它可以与
map
(和其他方法)结合使用以产生有趣的结果。

。with_index
也适用于散列:
散列。每个_键。with_index|key,idx
@bs偶:此外,它还适用于任何返回枚举数的方法:)两个(次要)注意:1)
每个带有索引的\u也可以与
映射一起使用(Ruby>=1.8.7)。2) 
values.each.with\u index
实际上表现为
values.map.with\u index
@tokland:谢谢!不知怎的,我从来没有尝试过将
map
每个带索引的\u
:)
一起使用。带索引的\u
也可以用于哈希:
hash.each\u key.with\u index | key,idx |
@bs偶:此外,它可以与任何返回枚举数的方法一起使用:)两个(次要)注释:1)
每个带索引的\u也可以与
map
(Ruby>=1.8.7)。2)
值。每个.with\u index
实际上表现为
值。map.with\u index
@tokland:谢谢!不知何故,我从未尝试将
map
each\u与索引一起使用(
:)
values.each.with_index do |value, idx|
  # work
end