まつもと ゆきひろです

In message "[ruby-list:33797] 変数の宣言"
    on 02/02/08, Yasuhiro Hayase <hayase / hcn.zaq.ne.jp> writes:

|% irb
|irb(main):001:0> defined?(x)
|nil
|irb(main):002:0> x=x
|nil
|irb(main):003:0> defined?(x)
|"local-variable"
|
|という事もできて面白いのですが、これにはなにか理由があるのでしょうか?
|代入実行時に宣言されることにしても良いと思うのですが。

理由というか、以下のことを考えると他に良い選択肢がなかったの
ですが。

  * ローカル変数のスコープは静的に決まるべき、つまり代入文が
    実行されたら変数が存在するというルールは*良くない*

    なぜなら、動的なスコープは分かりにくいし、せっかくの数少
    ない最適化の機会を奪うことになるから。

                                まつもと ゆきひろ /:|)