Rubyリファレンス: Home

enum_for, to_enum (Object)

Edit   History

Ruby 1.8.7 Ruby 1.9

標準クラス・モジュール > Object > enum_for, to_enum

obj.enum_for(method = :each [, arg, ...])
obj.to_enum(method = :each [, arg, ...])

enum_forメソッドまたはto_enumメソッドは、レシーバのオブジェクトと列挙用のメソッドを元にしてEnumeratorオブジェクトを作成します。Enumeratorクラスのnewメソッドを使って、Enumerator.new(obj, method, arg)とするのと同じです。

引数methodには、メソッドの名前をシンボルか文字列で渡します。methodを指定しないとeachメソッドが使われます。

Ruby 1.8.6では、require "enumerator"としてライブラリを読み込めばこのメソッドが使えるようになります。

次の例は、文字列"hello"each_byteメソッドを使ったEnumeratorオブジェクトを作成し、collectメソッドで文字列中のバイトを配列に集めます。

require "enumerator" if RUBY_VERSION < "1.8.7"
 
enum = "hello".enum_for(:each_byte)
p enum.collect {|byte| byte.to_s(16) }
["68", "65", "6c", "6c", "6f"]

引数methodのメソッドが引数を取るときは、第2引数arg以降にその引数を並べます。次の例は、整数3のstepメソッドに30, 3を渡すEnumeratorオブジェクトを作ります。

p 3.enum_for(:step, 30, 3).to_a
[3, 6, 9, 12, 15, 18, 21, 24, 27, 30]

関連項目