Rubyでメソッドの存在を調べる方法まとめ
オブジェクトに対してメソッドが存在するか
使うメソッドはObject#respond_to?です。
"string".respond_to?(:chomp) => true
こんな感じ。
クラスに対してメソッドの存在を確認する
Method#method_defined?を使います。
String.method_defined?(:chop) => true
上記の方法ではPrivateなメソッドは探せません
なので、それぞれ以下のようにメソッドを書き換え(引数を入れ)てください。
- respond_to? => respond_to?(:method,true)
- method_defined? => private_method_defined?
メタプログラミングなんかするときに使ってたけどすっかり忘れてたのでメモでした。