Ruby 1.9.2 リファレンスマニュアル > ライブラリ一覧 > 組み込みライブラリ > Enumeratorクラス
クラスの継承リスト: Enumerator < Enumerable < Object < Kernel < BasicObject
each 以外のメソッドにも Enumerable の機能を提供するためのラッパークラスです。 また、外部イテレータとしても使えます。
Enumerable モジュールは、 Module#include 先のクラスが持つ each メソッドを元に様々なメソッドを提供します。 例えば Array#map は Array#each の繰り返しを元にして定義されます。 Enumerator を介することにより String#each_byte のような 異なる名前のイテレータについても each と同様に Enumerable の機能を利用できます。
Enumerator を生成するには Enumerator.new あるいは Object#to_enum, Object#enum_for を利用します。 また、一部のイテレータはブロックを渡さずに呼び出すと繰り返しを実行する代わりに enumerator を生成して返します。
外部イテレータとしての機能は Fiber を用いて実装されているため Fiber と同じ制限があります。 例えば以下のようなスレッドをまたいだ呼び出しはエラーになります。
a = nil Thread.new do a = [1, 2, 3].each a.next end.join p a.next #=> t.rb:7:in `next': fiber called across threads (FiberError) from t.rb:7:in `<main>'
定義 | 説明 | |
---|---|---|
new(obj, method = :each, *args) -> Enumerator
|
オブジェクト obj について、 each の代わりに method という 名前のメソッドを使って繰り返すオブジェクトを生成して返します。 args を指定すると、 method の呼び出し時に渡されます。 |
|
new {|y| ... } -> Enumerator
|
Enumerator オブジェクトを生成して返します。与えられたブロックは Enumerator::Yielder オブジェクトを 引数として実行されます。 |
定義 | 説明 | |
---|---|---|
each {...} -> object
|
生成時のパラメータに従ってブロックを繰り返します。 生成時に指定したイテレータの戻り値をそのまま返します。 |
|
next -> object
|
「次」のオブジェクトを返します。 |
|
rewind -> self
|
列挙状態を巻き戻します。 |
|
with_index(offset = 0) {|(*args), idx| ... } -> object
|
生成時のパラメータに従って、要素にインデックスを添えて繰り返します。 インデックスは offset から始まります。 |
|
with_object(obj) -> Enumerator
|
!
!=
all?
any?
chunk
collect
collect_concat
count
cycle
detect
drop
drop_while
each_cons
each_entry
each_slice
each_with_index
each_with_object
entries
find_all
find_index
first
grep
group_by
include?
inject
max
max_by
min
min_by
minmax
minmax_by
none?
one?
partition
reject
reverse_each
slice_before
sort
sort_by
take
take_while
to_set
zip
==
===
=~
__id__
__send__
_dump
class
clone
dclone
display
enum_for
eql?
equal?
extend
freeze
frozen?
hash
initialize
initialize_copy
inspect
instance_eval
instance_exec
instance_of?
instance_variable_defined?
instance_variable_get
instance_variable_set
instance_variables
is_a?
marshal_dump
marshal_load
method
method_missing
methods
must_be
must_be_close_to
must_be_empty
must_be_instance_of
must_be_kind_of
must_be_nil
must_be_same_as
must_be_within_epsilon
must_equal
must_include
must_match
must_raise
must_respond_to
must_send
must_throw
nil?
pretty_inspect
pretty_print
pretty_print_cycle
pretty_print_inspect
pretty_print_instance_variables
private_methods
protected_methods
public_methods
remove_instance_variable
respond_to?
respond_to_missing?
singleton_class
singleton_method_added
singleton_method_removed
singleton_method_undefined
singleton_methods
taint
tainted?
tap
to_ary
to_hash
to_int
to_io
to_proc
to_regexp
to_s
to_str
to_yaml
to_yaml_properties
to_yaml_style
trust
untaint
untrust
untrusted?
wont_be
wont_be_close_to
wont_be_empty
wont_be_instance_of
wont_be_kind_of
wont_be_nil
wont_be_same_as
wont_be_within_epsilon
wont_equal
wont_include
wont_match
wont_respond_to