each_object {|object| ...} -> Integer[permalink][rdoc][edit]each_object(klass) {|object| ...} -> Integereach_object -> Enumeratoreach_object(klass) -> Enumerator-
指定された klass と Object#kind_of? の関係にある全てのオブジェクトに対して繰り返します。引数が省略された時には全てのオブジェクトに対して繰り返します。繰り返した数を返します。
ブロックが与えられなかった場合は、 Enumerator オブジェクトを返します。
次のオブジェクトについては繰り返しません
- 即値の Integer オブジェクト(ヒープ上に確保される大きな整数は繰り返します)
- Flonum(即値の Float オブジェクト)
- 静的な Symbol オブジェクト(動的に生成されたシンボルは繰り返します)
- TrueClass
- FalseClass
- NilClass
なお、Symbol をすべて列挙するには、かわりに Symbol.all_symbols が使用できます。
- [PARAM]
klass: - クラスかモジュールを指定します。
例: 全てのオブジェクトを扱うp ObjectSpace.each_object # => #<Enumerator: ObjectSpace:each_object(false)>
例: 任意のクラスを扱うObjectSpace.each_object.take(5).each { |x| p x } count = ObjectSpace.each_object { |x| x } puts "Total count: #{count}" # => "scope" # => "scopes" # => "sym" # => "class_names" # => "@corrections" # => Total count: 9938Person = Struct.new(:name) s1 = Person.new("tanaka") s2 = Person.new("sato") count = ObjectSpace.each_object(Person) { |x| p x } puts "Total count: #{count}" # => #<struct Person name="sato"> # => #<struct Person name="tanaka"> # => Total count: 2