在Ruby中使用each_with_index迭代器时,值太多

时间:2016-10-20 13:59:40

标签: ruby

我在Ruby中有一个结果集(Mongoid::Criteria),它是mongoid查询的结果。在我的迭代输出中添加一些格式化结果集时,我有时会得到额外的东西。

例如:

widgets = Things.where(type: 'widget')

如果我这样做,小部件的数量是20:

widgets.each_with_index do |sprocket, index|
  puts "#{sprocket.name} is number #{index} in the list." 
  ...lots of code...
  yield sprocket
end

我将返回22行,小部件中的20个链轮中的两个被复制。这个循环在一个更大的循环内。当我重新运行我的代码时,它不会每次都发生,也不会每次都重复相同的链轮。

奇怪的是,如果这样做:

widgets.each do |sprocket, index|
  puts "#{sprocket.name} is number #{index} in the list."
end

我得到了20个项目的清单。

我查看了我的数据,找不到解释此行为的模式。

为什么_each_with_index_有时会返回更多项目?

0 个答案:

没有答案