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メソッドと組み合わせると、楽に実装できるくらいだべ。