我在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_
有时会返回更多项目?