self.extendedからbase.class_evalでインスタンス変数を初期化するのはなぜ？


Railsのソースを読むと、

ActiveSupportのAutoloadで、

以下のようなコードがありました。

[code]

    def self.extended(base) # :nodoc:
          base.class_eval do
            @_autoloads = {}
            @_under_path = nil
            @_at_path = nil
            @_eager_autoload = false
          end
    end
    
[/code]

extendされた際に、そのクラスに対して

クラスインスタンス変数を定義しているのですが

クラス変数を利用していないのは何故でしょうか？

クラスインスタンス変数とは違い、  
クラス変数の場合は、継承先で親の変数を参照できるため、  
上記のコードと同じ動作になると思っています。




自己解決致しました。

extendする際、クラス変数だと継承先で参照できないため、  
self.extendedで、継承先にクラスインスタンス変数を定義していました。

