プログラミング的なSomething

プログラミング的なSomething

ITエンジニア(?)目線で生活・自転車・トレーニング話を綴ります

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?

メタプログラミングなんかするときに使ってたけどすっかり忘れてたのでメモでした。