私はRails 3.0の学習を開始し、Pure Ruby 1.9の学習に時間を費やすことに決めました.オブジェクトクラスは常に利用可能であるため、オブジェクトクラスを表示する方法があるかどうか疑問に思います. たとえば、to_a、to_sなどのオブジェクトクラスのすべてのメソッドを表示するIRBに入力できるコマンドがあります。助けてくれてありがとう
2 に答える
#methods
ご希望の方法です。オブジェクトが応答するすべてのメソッドの名前であるシンボルの配列を返すだけです。
Object.new.methods
またはirbでより読みやすい:
puts Object.new.methods.sort.to_yaml
またはクラスメソッドの場合:
Object.methods
ただし、一部のオブジェクトでは、ここにリストされていないメソッドを使用できます。フックで実装された#method_missing
ものは表示されません。これには、多くのActiveRecord
メソッドと他のレール オブジェクトが含まれます。
しかし、何もトリッキーなことが起こっていない限り、これはあなたが望むように見えるリストです.
オブジェクトのメソッドを表示するには、次のようにしますyour_object.methods
。クラスの場合、これはそのクラス メソッドになります。クラスのインスタンス メソッドを表示するには、次のようにしますyour_class.instance_methods
。したがって、Object のすべてのクラス メソッドを一覧表示するには を実行しObject.methods
、Object のすべてのインスタンス メソッドを表示するには を実行しますObject.instance_methods
。
さらなるヒント: 特定のクラスが実装するメソッド (その祖先から継承されたメソッドではない) のみを表示したい場合は、false
前述のいずれかのメソッドに引数として渡すことができます。たとえば、は String が実装するインスタンス メソッドのリストを返しますが、 や などString.instance_methods(false)
の一般的な Object メソッドは返しません。dup
is_a?
ただし、学習しようとしている場合は、特定のクラスまたはクラス拡張 (Rails の String や Date への追加など) のドキュメントを参照することをお勧めします。