From: matz@... (Yukihiro Matsumoto) Date: 2002-11-07T07:05:07+09:00 Subject: [ruby-list:36373] Re: クラス変数をクラスメソッドから参照する まつもと ゆきひろです In message "[ruby-list:36371] クラス変数をクラスメソッドから参照する" on 02/11/07, Takashi Kanai writes: |クラスメソッドを直接呼び出すのはOKのようですが、インスタンスから |呼び出すのはエラーです。privateメソッドを呼び出したと言っているよう |ですが、なぜそうなるのか分かりません。 クラスメソッドはクラスのメソッドですからインスタンスはレシー バになりません。 |「@@VVVは初期化されていないクラス変数である」と言われているようですが、 |なぜそんなことを言われなければならないのか分かりません。 初期化されていないからです。 |---- test2 ------------------ |class AAA | @@VVV = "xyz" |end |def AAA.test | p @@VVV |end |AAA::test #=> "xyz" |AAA.new.test #=> "xyz" |----------------------------- クラス変数の所属するクラスは「参照する部分を囲むもっとも内側 のclass文(特異クラス定義を除く)で定義されているクラス」です。 この場合には@@VVVの参照はクラス定義の内側ではありませんから、 AAAのクラス変数を参照できる保証はありません。というか、実際 に参照されずにエラーになってますね。