Ruby 2.3.0 リファレンスマニュアル > ライブラリ一覧 > 組み込みライブラリ > BasicObjectクラス > method_missing (private)
method_missing(name, *args) -> object
[permalink][rdoc]呼びだされたメソッドが定義されていなかった時、Rubyインタプリタがこのメソッド を呼び出します。
呼び出しに失敗したメソッドの名前 (Symbol) が name に その時の引数が第二引数以降に渡されます。
デフォルトではこのメソッドは例外 NoMethodError を発生させます。
class Foo def initialize(data) @data = data end def method_missing(name, lang) if name.to_s =~ /\Afind_(\d+)_in\z/ if @data[lang] p @data[lang][$1.to_i] else raise "#{lang} unknown" end else super end end end dic = Foo.new({:English => %w(zero one two), :Esperanto => %w(nulo unu du)}) dic.find_2_in :Esperanto #=> "du"
[注意] このメソッドを override する場合は対象のメソッド名に対して Object#respond_to? が真を返すようにしてください。 そのためには、Object#respond_to_missing? も同様に override する必 要があります。
[SEE_ALSO] Object#respond_to?, Object#respond_to_missing?