From: KURODA Hiraku Date: 2007-05-16T21:49:33+09:00 Subject: [ruby-list:43523] ネストしたモジュールから参照する定数 黒田拓です。 Rubyの仕様に関して質問いたします。 以下のようなソースで、ネストしたモジュールの中から外側のモジュールの定数 を参照しようとしました。 ---- #!/usr/bin/ruby module A HOGE = "hoge" module B def self.test puts HOGE end end end module A module C def self.test puts HOGE end end end module A::D def self.test puts HOGE end end A::B.test A::C.test A::D.test ---- 定義をこのように記述すると、モジュールBとCからは外側のモジュールAの定数 A::HOGEを参照できるのですが、DからはA::HOGEを参照できず、 uninitialized constant A::D::HOGE (NameError) が発生しました。 Rubyのバージョンは ruby 1.8.5 (2006-08-25) [i486-linux] です。 | module A | module B; end | end という記述と | module A; end | module A::B; end という記述は同じものだと考えていたのですが実は違うのでしょうか? # とりあえずruby-listから検索すると以下のようなスレッドが # 見付かりました。 # http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/36944 # 今回の件ではincludeではなく単に記述方法の違いなので該当しないのではな # いかとも思うのですが、やはりこれなのでしょうか? 以上、どうぞよろしくお願いいたします。 -- -------------------------------------------------- 黒田 拓(くろだ ひらく) hiraku@sapporo.email.ne.jp http://www.hinet.mydns.jp/~hiraku/ --------------------------------------------------