61 votes

Comment découper un tableau en Ruby

Dans Ruby 1.8.6, j'ai un tableau de, disons, 100 000 identifiants d'utilisateur, chacun d'eux étant un entier Je veux exécuter un bloc de code sur ces identifiants d'utilisateur mais je veux le faire en morceaux. Par exemple, je veux les traiter 100 à la fois. Comment puis-je facilement y parvenir aussi simplement que possible?

Je pourrais faire quelque chose comme ce qui suit, mais il existe probablement un moyen plus simple:

 a = Array.new
userids.each { |userid|
  a << userid
  if a.length == 100
    # Process chunk
    a = Array.new
  end
}
unless a.empty?
  # Process chunk
end
 

117voto

sepp2k Points 157757
require 'enumerator'
userids.each_slice(100) do |a|
  # do something with a
end

26voto

wombleton Points 6130

Rails a in_groups_of , qui utilise sous le capot each_slice .

 userids.in_groups_of(100){|group|
  //process group
}
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X