[#837] request SCAN — Shin-ichiro HARA <sinara@...>

原です。

25 messages 1997/11/14
[#838] Re: request SCAN — matz@... (Yukihiro Matsumoto) 1997/11/14

まつもと ゆきひろです

[#839] Re: request SCAN — Shin-ichiro HARA <sinara@...> 1997/11/14

原です。

[#840] Re: request SCAN — Shin-ichiro HARA <sinara@...> 1997/11/14

原です。

[#841] Re: request SCAN — Shin-ichiro HARA <sinara@...> 1997/11/14

原です。

[#843] Re: request SCAN — matz@... (Yukihiro Matsumoto) 1997/11/14

まつもと ゆきひろです

[#844] Re: request SCAN — Shin-ichiro HARA <sinara@...> 1997/11/14

原です。

[#845] Re: request SCAN — matz@... (Yukihiro Matsumoto) 1997/11/14

まつもと ゆきひろです

[#864] [Req] Proc.new — Shin-ichiro HARA <sinara@...>

原です。

53 messages 1997/11/19
[#865] Re: [Req] Proc.new — matz@... (Yukihiro Matsumoto) 1997/11/19

まつもと ゆきひろです

[#866] Re: [Req] Proc.new — Shin-ichiro HARA <sinara@...> 1997/11/19

原です。

[#867] Re: [Req] Proc.new — matz@... (Yukihiro Matsumoto) 1997/11/19

まつもと ゆきひろです

[#875] Re: [Req] Proc.new — Shin-ichiro HARA <sinara@...> 1997/11/20

原です。

[#877] Re: [Req] Proc.new — shugo@... (Shugo Maeda) 1997/11/20

前田です。

[#879] Re: [Req] Proc.new — Shin-ichiro HARA <sinara@...> 1997/11/20

原です。

[#886] Re: [Req] Proc.new — shugo@... (Shugo Maeda) 1997/11/20

前田です。

[#890] Re: [Req] Proc.new — keiju@... (石塚圭樹 ) 1997/11/20

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

[ruby-dev:927] Re: ruby env[ Re: [Req] Proc.new ]

From: matz@... (Yukihiro Matsumoto)
Date: 1997-11-25 06:10:33 UTC
List: ruby-dev #927
まつもと ゆきひろです

In message "[ruby-dev:926] Re: ruby env[ Re: [Req] Proc.new ]"
    on 97/11/25, 石塚圭樹 <keiju@rational.com> writes:

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

|といっても, メソッドオブジェクトの制約を知らないと...
|
|どんな制約があるでしょう?

まずノードから行きましょう.内部的なメソッドオブジェクトはノー
ドの1種ですから.

  * ノードはGC的にはオブジェクトだが,実際は単なるデータ構造
    にすぎない.selfを与えて実行する事ができる
  * (現状では)クラスを保持するフィールドがない.よってrubyに
    手を入れるか他のオブジェクトでラップしないとメッセージが
    送れない

次にメソッド(を実装している)オブジェクトです

  * クラスとの関連は無い
  * selfとの関連もない
  * 環境も持っていない

メソッド呼出は以下の手順で(rubyで記述された)メソッドを呼び出
しています.

  * クラスからメソッドオブジェクトを取り出す
  * frameを用意する.frameにはメソッドが定義されているクラス,
    呼び出した時のメソッド名,引数などが格納される(主にsuper
    の呼出のため)
  * scopeを用意する.主にscopeはローカル変数のハンドリングに
    用いられる
  * rb_eval(self, node)でメソッドオブジェクトを評価する

ですから,オブジェクトとしてはunbound method(メソッドの定義
そのもの)とbound method(selfが固定されているメソッド)があり
えるのではないかと思います.

|* proc/methodの相互変換
|
|は無理ですか?

不可能ではないです.が,ちょっと大変かなあ.

|># でも,やっぱり定数のあたりで引っかかるのかなあ.
|
|定数のundef/再代入ですね. もしできるとすると何か問題になることってある
|のですか?

「多用するとわけが分からなくなる」ということ以外には問題は無
いと思うんですけど,自身は無いですねえ.

				まつもと ゆきひろ /:|)

In This Thread

Prev Next