在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
Run Code Online (Sandbox Code Playgroud)
sep*_*p2k 114
用途each_slice:
require 'enumerator'
userids.each_slice(100) do |a|
# do something with a
end
Run Code Online (Sandbox Code Playgroud)
wom*_*ton 26
Rails有in_groups_of,引擎盖下使用each_slice.
userids.in_groups_of(100){|group|
//process group
}
Run Code Online (Sandbox Code Playgroud)