[#40130] Ruby/Tk の講習会 — Hidetoshi NAGAI <nagai@...>

永井@知能.九工大です.

12 messages 2004/10/25

[ruby-list:40081] Module.constantsとModule.const_get

From: HASHIMUKAI Toshikatsu <hashi@...>
Date: 2004-10-12 23:58:53 UTC
List: ruby-list #40081
  はしむかい、というものです。

	実行中の環境から、あるクラスやそれから派生されたクラスを探し出す、ということを
やろうと思い、下のような感じでスクリプトを書いてみました。

----
Module.constants.each do |mod|
  cls = Module.const_get(mod)
	if (cls.class == Class) && (cls < 探したいクラスのクラス名)
	  # 目的のクラス発見
	  cls.ほにゃらら
	end
end
----

  簡単なサンプルを書いて動かす分には問題はないのですが、これをいざ組み込んで使って
みると、Module.const_get()のところで "uninitialized constant:" というエラーが出る
場合があります。
  自分の中では「constantsの中のシンボルは、当然どこかで定義されているワケだから
それを使ってconst_get()できるよねえ」などと単純に考えているのですが、どうして
そうなるのか理解が難しい状態です(クラス/モジュールのネストとかincludeとかが関係してるの
かな、と考えてはいるのですが)。

  どなたか「こういう状況下でこうなる」など理由を説明していただければ
ありがたいです。


In This Thread

Prev Next