まつもと ゆきひろです

1.7でクラス変数の仕様を見直そうと思います。

 (1) クラスのトップレベルで初期化されていないクラス変数に対
     して、メソッドの中で代入するとエラーになる

     やはり、定数同様必ず初期化(宣言)が必要にした方が良いと
     感じました。

 (2) 特異クラス宣言(class <<obj)の中でクラス変数の初期化を行
     うとエラーになる

     1.6.8からの変更でクラス変数は、「もっとも内側の特異でな
     いクラス定義で定義されているクラス(またはモジュール)」
     に所属することになりました。よって、特異クラス宣言の中
     でクラス変数の初期化を行うことは望ましくないと考えます。

 (3) メソッドの外側ですでに定義されたクラス変数に再代入を行
     うと警告になる

     定数同様エラーを早く発見できるようにです。

 (4) クラス変数の有効範囲はそのクラス(またはモジュール)限定
     で、サブクラスからは見えない

     これは賛否両論あるかも。uriは動かなくなるし。

意見を求めます。
                                まつもと ゆきひろ /:|)