如何在Ruby中块化数组

时间:2009-08-04 22:45:45

标签: ruby arrays

在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

2 个答案:

答案 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
}