Rubyリファレンス: Home

each_slice (Enumerable)

Edit   History

Ruby 1.8.7 Ruby 1.9

標準クラス・モジュール > Enumerable > each_slice

enum.each_slice(n) {|arr| block }

each_sliceメソッドは、引数nで指定した数の要素を繰り返し取り出して、ブロックを実行します。ブロック引数arrには、取り出した要素が配列で入ります。

要素数がnで割り切れないときは、最後に余りの要素を取り出します。nの数が要素数より大きいときは、すべての要素を取り出してブロックを1度だけ実行します。

Ruby 1.8.7のenum_sliceメソッドはeach_sliceの別名です。Ruby 1.9ではenum_sliceは廃止されました。

次の例は8つの要素から3つずつ取り出します。最後に2個取り出されることが分かります。

(1..8).each_slice(3) {|arr| print "(" + arr.join(",") + ") " }
puts ""
(1,2,3) (4,5,6) (7,8)

each_sliceの戻り値はnilです。ブロックを省略するとEnumeratorオブジェクトを返します。

p (1..8).each_slice(3).to_a
[[1, 2, 3], [4, 5, 6], [7, 8]]

Ruby 1.8.6では、enumeratorライブラリを読み込めばeach_sliceメソッドが使えます。ブロックの省略はできません。

require "enumerator"
(1..8).each_slice(3) {|arr| print "(" + arr.join(",") + ") " }
puts ""
(1,2,3) (4,5,6) (7,8)

関連項目