Rubyリファレンス: Home

respond_to? (Object)

Edit   History

標準クラス・モジュール > Object > respond_to?

obj.respond_to?(name, private = false)

respond_to?メソッドは、レシーバのオブジェクトに対してメソッドを呼び出せるかどうかを調べます。引数nameにはメソッド名をシンボルか文字列で指定します。メソッドnameを持っていればtrue、なければfalseが返ります。

レシーバのクラスのメソッドだけでなく、親クラスやインクルードしているモジュールのメソッドも対象になります。デフォルトではpublicなメソッドとprotectedなメソッドを調べますが、第2引数にtrueを指定するとprivateなメソッドも含めて調べます。

class Cat
  def hello
    "meow!"
  end
  
  private
  def sleep
    "zzz..."
  end
end
 
cat = Cat.new
p cat.respond_to?(:object_id)
p cat.respond_to?(:hello)
p cat.respond_to?(:sleep)
p cat.respond_to?(:sleep, true)
true
true
false
true

関連項目