From: Shugo Maeda Date: 2002-07-24T15:44:45+09:00 Subject: [ruby-dev:17795] block local variable should be explicit 前田です。 At Wed, 24 Jul 2002 12:16:19 +0900, Tanaka Akira wrote: > > ループの場合はそうかもしれませんが、上の話はかならずしもループに > > 限定されないのですよね。 > > ふとおぼろげながら思い出した(ないしは今脳内で捏造された)んですが、ルー > プが一回以上実行されることをプログラマが(私が)知っている場合にはループ > でも気に入らないこともあった気もします。 > > とすると、スコープをローカルにしないブロックがあって、そのブロックは一 > 回も実行されなかったらエラーになるようになっているとその不満は解消され > るのかもしれません。(ついでに、メソッドが終わったら実行不能になる方が > いいか?) > > まぁ、純粋にスコープをローカルにしないだけのブロックというのもありうる > わけで、こちらのほうが直交性は高いですけど。 私はブロック内ではじめて初期化されるローカル変数についてもスコー プをブロックローカルにしないのが、使いやすいんじゃないかと思って います。 # ブロックのパラメータはブロックローカルでよいと思うのですが。 で、ブロックローカルな変数を使いたいときは:=で明示的にブロックロー カルであることを宣言する。 Ruby 2.0ではこのくらいの非互換は許容されるんじゃないかなと思うん ですけど、どうでしょう。 # ちなみに以前まつもとさんと話した感じでは、既存のスクリプトをこ # の仕様に合わせて変更するのは、機械的にできそうです。 -- 前田 修吾