[#30220] schedule for Ruby 1.8.6 — "Akinori MUSHA" <knu@...>

 ruby-core を読んでいない人もいると思うので、ここでもアナウンス

20 messages 2007/01/30

[ruby-dev:30196] Re: := operator

From: Shugo Maeda <shugo@...>
Date: 2007-01-26 00:57:10 UTC
List: ruby-dev #30196
前田です。

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なども
新しいスコープを導入するようにしてもいいかもしれないですね。

-- 
前田 修吾

In This Thread

Prev Next