From: Takashi Kanai Date: 2002-11-07T08:10:18+09:00 Subject: [ruby-list:36377] Re: クラス変数をクラスメソッドから参照する  こんにちは、金井です。 matz@ruby-lang.org (Yukihiro Matsumoto) wrote: > |クラスメソッドを直接呼び出すのはOKのようですが、インスタンスから > |呼び出すのはエラーです。privateメソッドを呼び出したと言っているよう > |ですが、なぜそうなるのか分かりません。 > > クラスメソッドはクラスのメソッドですからインスタンスはレシー > バになりません。  うーん、了解しました。 > |---- test2 ------------------ > |class AAA > | @@VVV = "xyz" > |end > |def AAA.test > | p @@VVV > |end > |AAA::test #=> "xyz" > |AAA.new.test #=> "xyz" > |----------------------------- > > クラス変数の所属するクラスは「参照する部分を囲むもっとも内側 > のclass文(特異クラス定義を除く)で定義されているクラス」です。 > この場合には@@VVVの参照はクラス定義の内側ではありませんから、 > AAAのクラス変数を参照できる保証はありません。というか、実際 > に参照されずにエラーになってますね。 納得しました。 何をやってはいけないかが分かりましたので安心してプログラムが書けます。 ありがとうございました。 参考までにお聞きしたいのですが、 ruby 1.6.6 (2001-12-26) [i686-linux] ではエラーにならないのはどうしてでしょうか? -- 金井 隆 (KANAI Takashi) kanai@nn.iij4u.or.jp