上級 › method_missing で super を呼ばないと本来のエラーが消える › パターン3
method_missing で super を呼ばないと本来のエラーが消える
method_missingを独自定義すると、未定義のメソッド呼び出しをすべて横取りできます。
1 class Cat 2 def method_missing(name, *args) 3 name == :meow ? "Meow!" : super 4 end 5 6 _________________________________________________________________________________________ ^ 7 end 8 9 c = Cat.new 10 puts c.respond_to?(:meow)
出力: false
空欄を埋めて実行を通す
method_missingとrespond_to_missing?は必ずセットで実装するのが基本です。片方だけでは動的なメソッドの存在確認と実際の呼び出し結果が食い違います。
次の問題