Rubyリファレンス: Home

each_cons (Enumerable)

Edit   History

Ruby 1.8.7 Ruby 1.9

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

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

each_consメソッドは、引数nで指定した数の要素を繰り返し取り出して、ブロックを実行します。ブロック引数arrには、取り出した要素が配列で入ります。nの数が要素数より大きいときは、ブロックを1度も実行しません。

each_sliceメソッドとは違い、[要素1, 要素2, 要素3, ...]、[要素2, 要素3, 要素4, ...]、[要素3, 要素4, 要素5, ...]、...のように取り出します。

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

(1..5).each_cons(3) {|arr| print "(" + arr.join(",") + ") " }
puts ""
(1,2,3) (2,3,4) (3,4,5)

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

p (1..5).enum_cons(3).to_a
[[1, 2, 3], [2, 3, 4], [3, 4, 5]]

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

require "enumerator"
(1..5).each_cons(3) {|arr| print "(" + arr.join(",") + ") " }
(1,2,3) (2,3,4) (3,4,5)

関連項目