objects - Cómo dividir una matriz en Ruby
ruby select (2)
Rails tiene in_groups_of
, que bajo el capó usa each_slice
.
userids.in_groups_of(100){|group|
//process group
}
En Ruby 1.8.6, tengo un conjunto de, por ejemplo, 100,000 ID de usuario, cada uno de los cuales es un int. Quiero realizar un bloque de código en estas identificaciones de usuario pero quiero hacerlo en partes. Por ejemplo, quiero procesarlas 100 a la vez. ¿Cómo puedo lograr esto tan fácilmente como sea posible?
Podría hacer algo como lo siguiente, pero probablemente hay una manera más fácil:
a = Array.new
userids.each { |userid|
a << userid
if a.length == 100
# Process chunk
a = Array.new
end
}
unless a.empty?
# Process chunk
end
Utilice each_slice
:
require ''enumerator''
userids.each_slice(100) do |a|
# do something with a
end