Ruby 1.8.7 リファレンスマニュアル > ライブラリ一覧 > 組み込みライブラリ > Moduleクラス > constants

instance method Module#constants

constants -> [String][permalink][rdoc]

そのモジュール(またはクラス)で定義されている定数名の配列を返します。

スーパークラスやインクルードしているモジュールの定数も含みます。 Object のサブクラスの場合、Objectやそのスーパークラスで定義されている 定数は含まれません。 Object.constants とすると Object クラスで定義された 定数の配列が得られます。

[SEE_ALSO] Module.constants, Kernel.#local_variables, Kernel.#global_variables, Object#instance_variables, Module#class_variables

Module.constants と Module#constants の違い

 # 出力の簡略化のため起動時の定数一覧を取得して後で差し引く
 $clist = Module.constants

 class Foo
   FOO = 1
 end
 class Bar
   BAR = 1

   # Bar は BAR を含む
   p constants                         # => ["BAR"]
   # 出力に FOO は含まれない
   p Module.constants - $clist         # => ["BAR", "Bar", "Foo"]
   class Baz
     # Baz は定数を含まない
     p constants                       # => []

     # ネストしたクラスでは、外側のクラスで定義した定数は
     # 参照可能なので、BAR は、Module.constants には含まれる
     # (クラス Baz も Bar の定数なので同様)
     p Module.constants - $clist       # => ["BAR", "Baz", "Bar", "Foo"]
   end
 end