如何在Ruby中分块数组
在Ruby 1.8.6中,我有一个数组,例如100,000个用户ID,每个ID都是一个int。 我想要在这些用户标识上执行一段代码,但是我想以大块的方式执行。 例如,我想每次处理它们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
require 'enumerator' userids.each_slice(100) do |a| # do something with a end
Rails有in_groups_of
,它在each_slice
使用each_slice
。
userids.in_groups_of(100){|group| //process group }