From: matz@... (Yukihiro Matsumoto) Date: 2002-11-22T03:19:51+09:00 Subject: [ruby-dev:18889] Re: class variables まつもと ゆきひろです In message "[ruby-dev:18884] Re: class variables" on 02/11/22, Minero Aoki writes: |> (4) クラス変数の有効範囲はそのクラス(またはモジュール)限定 |> で、サブクラスからは見えない |> |> これは賛否両論あるかも。uriは動かなくなるし。 | |これはなんか納得できません。net/http も動かなくなりますし。 net/httpはNet::HTTPクラスの範囲内でしかクラス変数を使ってな いので問題ないと思うんですが。 |上位・下位クラス間で情報を共有したいときは、また定数に配列 |とか入れてやらなきゃいけなくなるんでしょうか。それともクラス |のインスタンス変数とクラスメソッドを使うのでしょうか。 その辺も理解した上で「賛否両論」と書いたわけです。賛否の否で すね。 現状のクラス変数の問題は、名前の(偶然の)衝突に関してめちゃめ ちゃ弱い点です。たまたま同じ名前のクラス変数を使っているモ ジュールをインクルードしたら悲惨なことが発生します。その辺を なんとかしたいというのが今回の提案の基礎にあります。 もっとも、私の原案を無理強いしたいというわけでなく、議論によっ て知見を広めたいというのが主たる目的なので(なら最初からそう 書けって? ごもっとも)、反論が出るのは歓迎です。 | * 一つの継承木単位で必要なパラメータで、 | * 継承木の外のオブジェクトには公開したくない | |という値はどこに置けばいいのでしょう? 青木さんの推察の通り、クラス変数(orクラスのインスタンス変数) +クラスメソッド(を、たぶんclass_attr_readerのようなメソッド を介して)使おうと思ってました。 まつもと ゆきひろ /:|)