まつもと ゆきひろです

In message "[ruby-list:9790] load とクラス内定数"
    on 98/10/01, 民斗 <tommy / valley.ne.jp> writes:

|民斗です。
|
|クラス内定数の定義を別ファイルにして、load でそれを読み込ませたときに、
|その定数がクラス外から参照できなくなります。

そうなんですよ.loadはCの#includeとかと違って「トップレベル
に読み込む」んです.ですから,民斗さんの例,

|は問題ないんですが、この「HOGE="hoge"」を "bb" というファイルに移して、
|
|	class AA
|	  load "bb"
|	end
|	p AA::HOGE

では,トップレベル(Object)にHOGEという定数を定義します.

対処法は

  * bbから1行ずつ読み込んでevalする

  * 1.1dからはloadに第2引数が追加されload先のクラス/モジュー
    ルが指定できるようになるので,それを待つ

というものがあります.後者の場合は

  class AA
    load "bb", AA
  end

で期待通りの動きをするはずです.とはいえ1.1dがいつリリースか
というとはっきりしたことが言えないんですが.

                                まつもと ゆきひろ /:|)