In article <E11iZvN-0001e7-00 / ev.netlab.co.jp>
松田です.

ごとけんさん, まつもとさん, ご返事ありがとうございました.
# サーバがクラッシュして, 返事が遅くなりました.

matz / netlab.co.jp writes:

>> まつもと ゆきひろです
>> 
>> In message "[ruby-list:18169] self in Proc.call"
>>     on 99/10/31, Takashi Matsuda <matsu / arch.comp.kyutech.ac.jp> writes:
>> 
>> |selfは手続きオブジェクトのメソッド内で参照されているので, 手続きオブジェクト
>> |を指すべきだと思うのですが, どのように理解したらよいのでしょうか.
>> 
>> この説明はごとけんさんからあった通りです。closureというもの
>> ですね。
>> 
>> |なぜ, 手続きオブジェクトそのものを得たいのかというと, glutのTimerコールバック
>> |の設定で次のようにしたいからです.
>> 
>> たとえば
>> 
>>   GLUT.TimerFunc 1000, cb = proc{
>>     #
>>     GLUT.TimerFunc 1000, cb, 0
>>   }, 0
>> 
>> なんてワケにはいきませんか? 変数が余分?
>> 

この書き方でもよいのですが, この場合cbを後続の命令で変更するとコールバック
関数の動作にも影響がでてしまいます. いくつもコールバックを登録したいとして,
いちいち変数名を変えるのは面倒だなあと感じてしまいました.
Thread.currentみたいにProc.currentがあってもいいかなと.

でもこのあたりのことは closureをメソッドの中で作ればそれほど問題にはならない
なとあとで気づきました.