上級 › method_missing で super を呼ばないと本来のエラーが消える › パターン2
method_missing で super を呼ばないと本来のエラーが消える
method_missingを独自定義すると、未定義のメソッド呼び出しをすべて横取りできます。
1 class Robot 2 def method_missing(name, *args) 3 name == :beep ? "Beep!" : super 4 end 5 6 _________________________________________________________________________________________ ^ 7 end 8 9 r = Robot.new 10 puts r.respond_to?(:beep)
出力: false
空欄を埋めて実行を通す
method_missingだけを実装してrespond_to_missing?を省略すると、実際には反応できるメソッドなのにrespond_to?がfalseを返す食い違いが起きます。
次の問題