From: keiju@... (Keiju ISHITSUKA) Date: 1997-09-04T00:25:42+09:00 Subject: [ruby-dev:396] instance_methods_orign [Re: methods [Re: ruby 1.1a5 released]] けいじゅ@日本ラショナルソフトウェアです. In [ruby-dev :00376 ] the message: "[ruby-dev:376] Re: methods [Re: ruby 1.1a5 released] ", on Sep/02 16:59(JST) keiju@bc.mbn.or.jp (Keiju ISHITSUKA) writes: >>|* その(クラスのインスタンス|オブジェクト)が分かるメソッドとそれが実際 >>| にどのクラスで定義されているかの組みを返してくれるメソッド > >>これはmetap.rbででも対応しましょうか. >>書いて下さるんでしたら,取り込みますが. >そうですね. どうせ必要ですし. こちらで作りましょう. 他の応用meta機能も >切り出せて有用と考えられるものは, metap.rbに入れるようにしましょう. Module#instance_methods_origin という名前で作りましたが, 以下のプログ ラムです. # メソッド名が長いですねえ.. 何かいい名前ないですかね? # # メソッド名とそれが実際に定義されているクラスのハッシュ表を返す # def instance_methods_origin origins = {} for ancestor in ancestors for method in ancestor.instance_methods unless origins.include?(method) origins[method] = ancestor end end end origins end # あってますよね? それで気づいたことがあるのですが, Kernelで定義されているメソッドが妙に 多いんですがこれで良いんですか? マニュアル上はObjectになってますよね? そうすると, マニュアル上どこに説明があるかを調べるには, リファレンスマ ニュアルとつき合わせながらancestorsを遡る必要があるんですね. # 出澤さんは苦労したんだろうなあと思えてきました... __ ................................石塚 圭樹@日本ラショナルソフトェア... ----------------------------------->> e-mail: keiju@bc.mbn.or.jp <<---