在Ruby 1.8.6中,我有一个数组,比如100,000个用户ID,每个用户id都是一个int。我想在这些用户ID上执行一段代码,但我想以块的形式执行。例如,我想一次处理100个。我怎样才能尽可能简单地实现这一目标?
我可以做类似以下的事情,但可能有一种更简单的方法:
a = Array.new
userids.each { |userid|
a << userid
if a.length == 100
# Process chunk
a = Array.new
end
}
unless a.empty?
# Process chunk
end
答案 0 :(得分:110)
使用each_slice
:
require 'enumerator'
userids.each_slice(100) do |a|
# do something with a
end
答案 1 :(得分:24)
Rails有in_groups_of
,它使用each_slice
。
userids.in_groups_of(100){|group|
//process group
}