メタプログラミングRubyを読んだ

メタ

忘備録です。

同じクラスに複数includeした場合のancestors

後にincldueしたものが、メソッド探索の位置が浅くなる。

module M; end
module N; end

class C
  include M
  include N
end

p C.ancestors # [C, N, M, Object, Kernel, BasicObject]

細かいこと

  • Classクラスのスーパークラスは、Module。ClassとModuleの差分は、new・allovate・superclassのインスタンスメソッドが生えているかどうか。
  • loadはコードを実行するために使い、requireはライブラリをインポートするために使う。
  • ClassクラスのスーパークラスはModule。

分からなかったこと

ActiveSupport::Concern とか アトリビュートメソッド辺りから急激に理解が難しくなった...

Tags