From: Yasushi Shoji Date: 2000-09-14T17:57:40+09:00 Subject: [ruby-dev:10919] Re: Class Variable と継承 At Thu, 14 Sep 2000 12:57:18 +0900, matz@zetabits.com (Yukihiro Matsumoto) wrote: > > |> # 親クラスで先に使う。 > |> class A > |> @@c='A' > |> C='A' > |> end > |> class B |> @@c='B' # Aの@@cになる。 > |> C='B' > |> end > |class C | p @@c #=> "B" > |end > | > |これ、ちょっと驚きが多くないですかね?個人的には "A"を期待してしまうので > |すが‥。 > > クラス変数ってのはアクセス範囲を限定したグローバル変数に過ぎ > ず、でclass Bの定義の中で「代入」しているので"B"なのは当然だ > と思いますが。驚くと言うのは定数と勘違いしているのでは。 > > 驚かない仕様があると言うのであれば、是非聞きたいです。 %rubyでいろいろばかな事を言ってたんですが、copy on writeな物が欲いのかも しれません。「子供で書き変えた時点で親クラスから独立するクラス変数」 shellの environment variableとかも子供の変更は親には伝わらないですよね? 他の言語での「クラス変数」を知らないので、一般的な事を分ってないからなの かもしれませんが、「クラス変数」と言う名前から勝手にそういう物だと思いこ んでたみたいです。 -- yashi