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された際に、そのクラスに対して
クラスインスタンス変数を定義しているのですが
クラス変数を利用していないのは何故でしょうか?
クラスインスタンス変数とは違い、
クラス変数の場合は、継承先で親の変数を参照できるため、
上記のコードと同じ動作になると思っています。