メタプログラミングRubyを読んでいます(7)

読んだ範囲

メタプログラミングRuby」の「5.3 特異メソッド」から「5.8 まとめ」まで読みました。本日は、TIL形式です。

TIL

  • クラスメソッドは、クラスの特異メソッドです。def obj.my_method; enddef A.my_method; end を比較するとクラスメソッドの定義形式は、特異メソッドと同一であることが分かります。
  • 特異クラスは、インスタンスを一つしか持てない制限があります。そのため、シングルトンクラスと呼ばれることがあります。
  • prependラッパーを使うと既存処理を上書くことが出来ます。参考としてサンプルコードを示します。

prependラッパーのサンプルコード

prependラッパーのサンプルコードを示します。C#method1の処理を上書こうと思います。

module M
  def method1
    p 'M'
    super
  end
end

class C
  prepend M

  def method1
    p 'C'
  end
end

C.new.method1

実行結果

"M"
"C"