From: Shugo Maeda Date: 2007-01-26T09:57:10+09:00 Subject: [ruby-dev:30196] Re: := operator 前田です。 Yukihiro Matsumoto wrote: > |ところで、:=でもやはり外側のスコープの変数のhideは許されてしまう > |のでしょうか? > > -vで警告が出ます。禁止にしちゃうとコードの移動時に毎回重複を > 考慮する必要があるので、カジュアルな編集の時にはしんどいか > な、と。 外側のスコープに同名の変数があった場合はひとまず措くとして(まだ納得 してないらしい)、同一スコープにすでに同名の変数がある場合はエラーに した方がよくないでしょうか。 matzrubyで試すと x := 1 x := 2 p x #=> 2 となりますが、 x := 1 x := 2 # エラー p x の方がよいのではないか、ということです。 ありそうなケースとしては、 x := 1 ... for i in ary x := [] end のように書いて、forの外側のxを意図せずに書きかえてしまう、といった ことが考えられます。 それはそれとして、:=のような明示的な宣言が導入されるなら、forなども 新しいスコープを導入するようにしてもいいかもしれないですね。 -- 前田 修吾