Ruby 1.8.7 リファレンスマニュアル > ライブラリ一覧 > generatorライブラリ > Generatorクラス

class Generator

クラスの継承リスト: Generator < Enumerable < Object < Kernel

要約

内部イテレータを外部イテレータに変えるためのクラスです。 実装に callcc を使っているので遅いです。

例:

require 'generator'

# Generator from an Enumerable object
g = Generator.new(['A', 'B', 'C', 'Z'])

while g.next?
  puts g.next
end

# Generator from a block
g = Generator.new { |g|
  for i in 'A'..'C'
    g.yield i
  end

  g.yield 'Z'
}

# The same result as above
while g.next?
  puts g.next
end

特異メソッド

定義 説明
new(enum = nil) -> Generator
new(enum = nil) {|g| ... } -> Generator

Enumerable オブジェクトかブロックから Generator オブジェクトを生成します。

インスタンスメソッド

定義 説明
current -> object

現在の位置にある要素を返します。next と違い位置は移動しません。

each {|e| ... } -> self

ジェネレータの要素を引数としてブロックを評価します。self を返します。

end? -> bool

次の要素がなく、ジェネレータが終わりに達しているなら真を返します。

index -> Integer
pos -> Integer

現在の位置を返します。

next -> object

現在の位置にある要素を返し、位置を1つ進めます。

next? -> bool

次の要素が存在するなら真を返します。

rewind -> self

ジェネレータを最初に巻き戻します。self を返します。

yield(val) -> self

val をジェネレータに渡します。 Generator.new() {|g| ... } のブロックの中でしか呼ぶことができません。 ジェネレータに渡された val は next などで取り出すことができます。

継承したメソッド

all? any? collect count cycle detect drop drop_while each_cons each_slice each_with_index 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 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 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? 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 untaint