instance method Object#respond_to_missing?

respond_to_missing?(symbol, include_private) -> bool[permalink][rdoc][edit]

自身が symbol で表されるメソッドに対し BasicObject#method_missing で反応するつもりならば真を返します。

Object#respond_to? はメソッドが定義されていない場合、デフォルトでこのメソッドを呼びだし問合せます。

BasicObject#method_missing を override した場合にこのメソッドも override されるべきです。

false を返します。

[PARAM] symbol:
メソッド名シンボル
[PARAM] include_private:
private method も含めたい場合に true が渡されます


class Sample
  def method_missing(name, *args)
    if name =~ /^to_*/
      [name, *args] # => [:to_sample, "sample args1", "sample args2"]
      return
    else
      super
    end
  end

  def respond_to_missing?(sym, include_private)
    (sym =~ /^to_*/) ? true : super
  end
end

s = Sample.new
s.to_sample("sample args1", "sample args2")
s.respond_to?(:to_sample)  # => true
s.respond_to?(:sample)    # => false

[SEE_ALSO] Object#respond_to?, BasicObject#method_missing