Ruby method_missing - Silver/Gold試験対策
No Method Error
class Fuga def hoge puts "hogeだよ!" end end fuga = Fuga.new fuga.foo # No Method Error
BasicObject Classに定義されている、method_missingではNoMethodError時に実行することを記載できる
class Fuga def hoge puts "hogeだよ!" end def method_missing(method_name, *args) puts "メソッド名は #{method_name}, 引数はこちら、 #{args}" end end fuga = Fuga.new fuga.foo(4,2) #=> "メソッド名は foo, 引数はこちら、 [4, 2]"
method_missingでさらにno method errorを起こすとループになり...
class Fuga def hoge puts "hogeだよ!" end def method_missing(method_name, *args) bar end end fuga = Fuga.new fuga.foo #=> stack level too deep (SystemStackError)