Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

in_groups_ofで配列を指定個数毎に切り分ける

in_groups_ofは配列を指定個数ごとに切り分けてくれるメソッドです

(1..10).to_a.in_groups_of(3)
#=> [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, nil, nil]]

空白を任意の値で埋める事もできます

(1..10).to_a.in_groups_of(3,42)
#=> [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 42, 42]]

と、まぁこれでは何が美味しいのが分かりませんが
例えば、

(1..10).to_a.in_groups_of(3,42) do |a, b, c|
  puts "hoge:#{a}"  
  puts "piyo:#{b}"  
  puts "fuga:#{c}"  
end  

なんてやると

hoge:1
piyo:2
fuga:3
hoge:4
piyo:5
fuga:6
hoge:7
piyo:8
fuga:9
hoge:10
piyo:42
fuga:42

と、素直にロジック書くと微妙に入り組みそうなものも楽に書く事ができます。