undefを使ってメソッドを消せるらしい。
やってみる!
class Hoge def method_missing obj, *args, &block puts "missing" end end h = Hoge.new puts h.to_s
実行結果
#<Hoge:0x29383c0>
ちゃんと出てる。
これでto_sをundefすると
class Hoge undef to_s def method_missing obj, *args, &block puts "missing" end end h = Hoge.new puts h.to_s
実行結果
missing nil
お〜っちゃんと消せた!
基本的に使わないな…。
使うとしたら
- あるメソッドを消す
- method_missingで別クラスへ委譲する
とかくらい?
これなら他にも書き方はあるだろうけど。
sendメソッドと組み合わせると、楽に実装できるくらいだべ。