Irbにアクセスして、存在しないコマンドを入力すると、次のようなエラーが発生します。
"undefined local variable or method 'my_method' for main:Object (NameError)"
利用できるローカル変数またはメソッドのリストを取得する方法はありますか?これは、Rubyの探索に非常に役立ちます。
カーネル、オブジェクト、モジュールでメソッドを探します:例: local_variables 、 instance_methods 、 instance_variables 。
そこに他の素晴らしい方法。 検査 は別のものです。
素晴らしい答え。
あなたが探検するとき、あなたは自由にこれらを持っています:
obj.private_methods
obj.public_methods
obj.protected_methods
obj.singleton_methods
そして
MyClass.private_instance_methods
MyClass.protected_instance_methods
MyClass.public_instance_methods
のような使用法:
obj.public_methods.sort
レビューも簡単になります。
いくつかの特別なケースが存在します
String.instance_methods(false).sort
...は、Stringクラスで定義されたインスタンスメソッドのみを提供し、祖先から継承したクラスは省略します。ご存知のとおり、詳細はこちらをご覧ください: http://www.Ruby-doc.org/docs/ProgrammingRuby/ しかし、irbを調べて反映するほど楽しいものではありません。
幸せな探検-
ペリー
インスタンス変数を見つけるには、Zabbaが指摘したようにKernel#instance_variables
を使用できます。
オブジェクトで使用できるメソッドの場合、my_object.methods - Object.methods
を使用して、オブジェクトで使用できる非自明なメソッドを見つけます。これによりリストが絞り込まれ、かなり読みやすくなります。