self.extendedからbase.class_evalでインスタンス変数を初期化するのはなぜ?
Railsのソースを読むと、
ActiveSupportのAutoloadで、
以下のようなコードがありました。
def self.extended(base) # :nodoc:
base.class_eval do
@_autoloads = {}
@_under_path = nil
@_at_path = nil
@_eager_autoload = false
end
end
extendされた際に、そのクラスに対して
クラスインスタンス変数を定義しているのですが
クラス変数を利用していないのは何故でしょうか?
クラスインスタンス変数とは違い、
クラス変数の場合は、継承先で親の変数を参照できるため、
上記のコードと同じ動作になると思っています。