At Mon, 3 Jun 2002 06:26:56 +0900,
> |そのため,定義された時点での変数と重なると都合が悪いと思うので
> |すがどうでしょうか?
> 
> ええ、都合が悪い(というか重なることを予期してない)場合もある
> と思います。現時点では「だから重複しないようにしてね」という
> 方針なわけですが、これに対してどう手当てするのが適切だと思い
> ますか?

ブロック変数はブロックに固有の局所変数にするのが良いです.つまり,
メソッドの引数と同じような扱いが良いです.

ところで,重なることを意図する場合のブロック変数の使い方というのは
あるのでしょうか?

> 文法の複雑さや使いやすさ、互換性などいろいろ考えないといけま
> せんが。

すでに 局所変数を foo{|$a| ... } のように代入の代わりに使ってい
る人はいるかもしれませんが,大域変数,インスタンス変数,クラス
変数については現在のままでも良いと思っています.

ブロックは書かれた場所で使われるわけではないので,ブロック変数へ
の値は書かれた場所ではなくて,ブロックが使われたときに決まります.
そのため,使われる場所以外のことまで考えてブロック変数の名前を考
えたくないということから,僕は使いやすさは向上すると思います.

互換性についてですが,今まで重ならないように使ってきた人にとって
は問題は起きないと思います.そのため,先に書いたように,局所変数
を重ねて使う場合の意図を知りたいです.
たとえば,$x にブロックに与えれた値を渡したい場合に,

foo{|$x|}

を使うのはなんとなく気持ちは分かるのですが,局所変数 x の場合,

x = nil
foo{|x|}

はどういう見やすさの基準が働くのでしょう?
-- 
Takaaki Tateishi <ttate / kt.jaist.ac.jp>