3

私はRails 3.0の学習を開始し、Pure Ruby 1.9の学習に時間を費やすことに決めました.オブジェクトクラスは常に利用可能であるため、オブジェクトクラスを表示する方法があるかどうか疑問に思います. たとえば、to_a、to_sなどのオブジェクトクラスのすべてのメソッドを表示するIRBに入力できるコマンドがあります。助けてくれてありがとう

4

2 に答える 2

10

#methodsご希望の方法です。オブジェクトが応答するすべてのメソッドの名前であるシンボルの配列を返すだけです。

Object.new.methods

またはirbでより読みやすい:

puts Object.new.methods.sort.to_yaml

またはクラスメソッドの場合:

Object.methods

ただし、一部のオブジェクトでは、ここにリストされていないメソッドを使用できます。フックで実装された#method_missingものは表示されません。これには、多くのActiveRecordメソッドと他のレール オブジェクトが含まれます。

しかし、何もトリッキーなことが起こっていない限り、これはあなたが望むように見えるリストです.

于 2012-11-12T19:59:12.020 に答える
3

オブジェクトのメソッドを表示するには、次のようにしますyour_object.methods。クラスの場合、これはそのクラス メソッドになります。クラスのインスタンス メソッドを表示するには、次のようにしますyour_class.instance_methods。したがって、Object のすべてのクラス メソッドを一覧表示するには を実行しObject.methods、Object のすべてのインスタンス メソッドを表示するには を実行しますObject.instance_methods

さらなるヒント: 特定のクラスが実装するメソッド (その祖先から継承されたメソッドではない) のみを表示したい場合は、false前述のいずれかのメソッドに引数として渡すことができます。たとえば、は String が実装するインスタンス メソッドのリストを返しますが、 や などString.instance_methods(false)の一般的な Object メソッドは返しません。dupis_a?

ただし、学習しようとしている場合は、特定のクラスまたはクラス拡張 (Rails の String や Date への追加など) のドキュメントを参照することをお勧めします。

于 2012-11-12T20:05:35.460 に答える