正木です。

Subject: [ruby-dev:17716] Re: self in block
From: matz / ruby-lang.org (Yukihiro Matsumoto)
Date: Fri, 19 Jul 2002 16:40:17 +0900


||逆に新しい仕様ではすべての local 変数を block 内 local 変数にする。正確には:
||object.method(){<x,...> ...}
||の形のときは local 変数の scope は block 内に限定される。
||self はこれを呼び出した object を指す。

|最近では {<x,..> ..} ではなく「ちゃんとした」無名関数を導入
|するべきではないだろうかという気になってきてます。

無名関数を導入することには大賛成ですが、その場合の self は無名関数自身を
指すのが自然です。block の新仕様に期待するものとは少しずれるので、block
の新しい仕様の方も是非実現して欲しいと思います。
(block の形の方が使いやすい気もします。)

自己言及の方法をたくさん用意することは、Ruby の可能性を広げる意味で決して
無駄ではないと思います。