From: KIMURA Shusaku Date: 2003-03-14T18:19:11+09:00 Subject: [ruby-list:37318] 継承されたクラスの定数の扱いについて はじめまして、こんにちは。木村と申します。 質問がありまして投稿させていただきます。どなたか、ご存知のかたがいらっしゃ いましたら、よろしくお願いいたします。 クラス内で定義された定数が、そのクラスのサブクラス内でアクセスされたとき の挙動についてです。 まず、以下のスクリプトをご覧ください。 $ cat t.rb class Hoge A = 'hoge' def foo return A end end class Fuga < Hoge A = 'fuga' def bar return A end end a = Hoge.new b = Fuga.new p a.foo p b.foo p b.bar $ これを実行しますと以下のような結果になります。 $ ruby t.rb "hoge" "hoge" "fuga" $ クラス Fuga のインスタンス b において、Fuga 内で定義されたメソッド bar では、A の値が 'fuga' に見えるのに、親クラスから継承したメソッド foo で は 'hoge' に見えるわけです。 僕としましては、以下のような結果になるのかと思っておりました。 $ ruby t.rb "hoge" "fuga" "fuga" $ 果たして、これは仕様なのでしょうか。 なお、僕が使用している Ruby のバージョンは以下の通り 1.8.0 ですが、安定 版である 1.6.8 でも同じ結果でした。 $ ruby --version ruby 1.8.0 (2003-03-03) [i686-linux] $ どなたかご存知のかた、お教えいただけると嬉しいです。 -- 株式会社ハドソン コア・テクノロジー事業本部システム部システムウェア課 木村周作 (skimura@sp.hudson.co.jp)