From: matz@... (Yukihiro Matsumoto) Date: 2002-06-18T12:51:39+09:00 Subject: [ruby-dev:17504] Re: blocks and local variables まつもと ゆきひろです In message "[ruby-dev:17501] Re: blocks and local variables" on 02/06/18, Takaaki Tateishi writes: |> * なぜ分かりにくくなっているのか | |明示的な宣言がないことではないでしょうか? |そのため,どこで宣言されるのか分かり難いということだと思います. えーと、これは「ネストするブロックローカルな変数に関しては」 という意味ですよね。変数の明示的な宣言がないこと一般であれば、 それはRubyの特徴のひとつであるので譲れませんから。 |> * どうすれば分かりやすいのか | |そのスコープで初めて使われる変数への代入は宣言であるというのは, |まずスコープが分からなければならず,次に初めの変数であるという |ことが分からないといけません. |入れ子になったスコープではどのスコープに対して初めて使われる変 |数なのかが複数の意見に分かれてしまいます.これは現在の議論で起 |こっていることですね. |では,初めの変数であるということを見分けるためにはどういうもの |が望ましいかというと,よりスコープの範囲が短い方が見やすいと僕 |は考えます. |スコープ外(ブロック外)のパラメータを参照したいときには,パラメー |タ名が重なることを避ければ良いだけです. |このような考えから,僕は,ブロックパラメータはブロックにローカル |である方が良いと考えています. 「よりスコープの範囲が短い方が見やすい」のあたりからよく分か らなくなってしまいました。いや、メリットは分からないでもない んですが、それだけでは過去の互換性を捨てるほどのメリットに思 えないんですけど。 ブロックパラメータをブロックにローカルにするだけでは、ブロッ クローカル変数の問題は解決しないのですが、その辺はどう考えて いますか? まつもと ゆきひろ /:|)