まつもと ゆきひろです
1.7でクラス変数の仕様を見直そうと思います。
(1) クラスのトップレベルで初期化されていないクラス変数に対
して、メソッドの中で代入するとエラーになる
やはり、定数同様必ず初期化(宣言)が必要にした方が良いと
感じました。
(2) 特異クラス宣言(class <<obj)の中でクラス変数の初期化を行
うとエラーになる
1.6.8からの変更でクラス変数は、「もっとも内側の特異でな
いクラス定義で定義されているクラス(またはモジュール)」
に所属することになりました。よって、特異クラス宣言の中
でクラス変数の初期化を行うことは望ましくないと考えます。
(3) メソッドの外側ですでに定義されたクラス変数に再代入を行
うと警告になる
定数同様エラーを早く発見できるようにです。
(4) クラス変数の有効範囲はそのクラス(またはモジュール)限定
で、サブクラスからは見えない
これは賛否両論あるかも。uriは動かなくなるし。
意見を求めます。
まつもと ゆきひろ /:|)