[#352] ruby 1.1a5 released — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

38 messages 1997/09/01
[#353] Re: ruby 1.1a5 released — keiju@... (石塚圭樹 ) 1997/09/01

[#354] Re: ruby 1.1a5 released — matz@... (Yukihiro Matsumoto) 1997/09/01

まつもと ゆきひろです

[#356] Re: methods [Re: ruby 1.1a5 released] — matz@... (Yukihiro Matsumoto) 1997/09/01

まつもと ゆきひろです

[#357] Re: methods [Re: ruby 1.1a5 released] — keiju@... (Keiju ISHITSUKA) 1997/09/01

けいじゅ@日本ラショナルソフトウェアです.

[#359] Re: methods [Re: ruby 1.1a5 released] — matz@... (Yukihiro Matsumoto) 1997/09/02

まつもと ゆきひろです

[#363] Re: methods [Re: ruby 1.1a5 released] — matz@... (Yukihiro Matsumoto) 1997/09/02

まつもと ゆきひろです

[#374] Re: methods [Re: ruby 1.1a5 released] — matz@... (Yukihiro Matsumoto) 1997/09/02

まつもと ゆきひろです

[#376] Re: methods [Re: ruby 1.1a5 released] — keiju@... (Keiju ISHITSUKA) 1997/09/02

けいじゅ@日本ラショナルソフトウェアです.

[#382] Re: methods [Re: ruby 1.1a5 released] — matz@... (Yukihiro Matsumoto) 1997/09/02

まつもと ゆきひろです

[#390] Re: methods [Re: ruby 1.1a5 released] — keiju@... (Keiju ISHITSUKA) 1997/09/03

けいじゅ@日本ラショナルソフトウェアです.

[#391] Re: methods [Re: ruby 1.1a5 released] — matz@... (Yukihiro Matsumoto) 1997/09/03

まつもと ゆきひろです

[#441] How to report a bug — takagi@... (TAKAGI Hiromitsu)

Bus error が出ました。

15 messages 1997/09/09

[#461] [Q] ruby-socket(mswin32) — Masaki Suketa <suke@...>

助田です

27 messages 1997/09/11
[#462] Re: [Q] ruby-socket(mswin32) — matz@... (Yukihiro Matsumoto) 1997/09/11

まつもと ゆきひろです

[#463] Re: [Q] ruby-socket(mswin32) — Masaki Suketa <suke@...> 1997/09/11

助田です

[#464] Re: [Q] ruby-socket(mswin32) — matz@... (Yukihiro Matsumoto) 1997/09/11

まつもと ゆきひろです

[#467] Re: [Q] ruby-socket(mswin32) — WATANABE Hirofumi <watanabe@...> 1997/09/11

わたなべです.

[#594] BUG?(marshal) — Masaki Suketa <suke@...>

以下のプログラムを実行した時に(3)と(4)で出力結果が違います。

17 messages 1997/09/30

[ruby-dev:374] Re: methods [Re: ruby 1.1a5 released]

From: matz@... (Yukihiro Matsumoto)
Date: 1997-09-02 07:12:03 UTC
List: ruby-dev #374
まつもと ゆきひろです

In message "[ruby-dev:370] Re: methods [Re: ruby 1.1a5 released]"
    on 97/09/02, 石塚圭樹 <keiju@bc.mbn.or.jp> writes:

|けいじゅ@日本ラショナルソフトウェアです.

|>という仕様になっています.どうも,これでは足りないようなので
|>すが,どう足りないのか,ということについて議論したいです.あ
|>るオブジェクトの特異メソッドを返すメソッド(あるいはオプショ
|>ン)があればそれで済む問題なんですか?
|
|少なくともそれは欲しいですね. あと, 
|
|* オブジェクトのプライベートな特異メソッドを返す関数
|
|も欲しいですね. 

うーん,メソッドは

  * 特異メソッド
  * そのオブジェクトのクラスで定義されているもの
  * そのクラスに継承やincludeで取り込まれているもの

にわけられると思いますが(それぞれにpublic/privateがある),

  * 全部を得る
  * 特異メソッドだけを得る
  * あるクラス/モジュールで定義されているメソッドだけをとる

があれば良いのかな.どう思います?

とすると,

  Objcet#methods(全部のメソッドのリスト)
  Object#private_methods(全部のメソッドのリスト)
  Module#instance_methods(そのクラスのメソッド)
  Module#private_instance_methods(そのクラスのメソッド)
  Objcet#singleton_methods(特異メソッドだけ)
        class << obj; self.instance_methods end と同じ

で,どうかな,と思うんですけど.privateな特異メソッドは

  class << obj; self.private_instance_methods end

で対応しようかな,と思います.

|あと, もしやって頂けるなら, 
|
|* その(クラスのインスタンス|オブジェクト)が分かるメソッドとそれが実際
|  にどのクラスで定義されているかの組みを返してくれるメソッド
|
|があるとベストですが, methods関連メソッド群とancestorsがあれば作ること
|ができますので, 無理はいいません.

これはmetap.rbででも対応しましょうか.
書いて下さるんでしたら,取り込みますが.

|* ancestorsに相当する, 定数の参照パスを返すメソッド
|* か, 静的スコープのパス(これは分かるのかな? 文字列ベースだけど)
|
|が必要ですね. 後者は優先順位の判断はこちらで行うことになるので若干面倒
|ですが, ancestorsの機能と重複していないのでその方が良いかも...

後者は採用しましょう.

|つぎに, 将来的なことも考えて, クラスのブラウジングツールを作るという視
|点から見ると,
|
|* あるクラスから直接includeしているモジュールを調べるメソッド(優先度順)
|* あるクラスのサブクラス群を取り出すメソッド
|
|は欲しいですね. 後者はスーパクラスが分かるのでそういう情報を作ることは
|できなくもないですが, 前者は今のところ無理ですよね.

ancestorsとkind_of?(Module)を組み合わせれば可能ですね.ただ
し,includeがあるところを完全に検出することは出来ませんけど
(すでにスーパークラスでincludeされていた場合,includeはなに
もしないから).

|あと, さらに要望を述べるなら, メソッド内部の情報になっていくと思います.
|
|* 定義されているクラス
|* メソッド名

ここまではまあ良いとして,

|* 引数の数
|* 使用しているインスタンス変数の一覧
|* 使用している定数の一覧
|* ローカル変数(およびプライベート呼びだしメソッド)の一覧
|* 呼び出しているメソッド名の一覧
|
|でも, ここまでは大変でしょ?

ええ,それにソースそのものに関する情報は内部的には持たないよ
うにしようと思っていますから,この辺は採用するつもりはありま
せん.ごめんね.
				まつもと ゆきひろ /:|)

In This Thread