#ruby
#ruby
Вопрос:
У меня есть результирующий набор ( Mongoid::Criteria
) в Ruby, который является результатом 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_
иногда возвращает больше элементов?
Комментарии:
1. Что происходит в
...lots of code...
? Вы уверены, что этот код не вызывает такое поведение?