Ruby 1.9.2 リファレンスマニュアル > ライブラリ一覧 > library _builtin > class Object > respond_to?

instance method Object#respond_to?

respond_to?(name, include_private = false) -> bool

オブジェクトが public メソッド name を持つとき真を返します。 include_private が真のときは private メソッドに対しても真を返します。

オブジェクトが メソッド name を持つというのは、 オブジェクトが メソッド name に応答することができることをいいます。

[PARAM] name:
Symbol または文字列で指定するメソッド名です。
class F
  def hello
    "Bonjour"
  end
end

class D
private
  def hello
    "Guten Tag"
  end
end
list = [F.new,D.new]

list.each{|it| puts it.hello if it.respond_to?(:hello)}
#=> Bonjour

list.each{|it| it.instance_eval("puts hello if it.respond_to?(:hello, true)")}
#=> Bonjour
#   Guten Tag

[SEE_ALSO] Module#method_defined?