まつもと ゆきひろです

In message "[ruby-list:14210] Re: private inner class (Re:  Re: class def in class def)"
    on 99/05/11, "NAKAMURA, Hiroshi" <nakahiro / sarion.co.jp> writes:

|> |inner classって呼んだりしてます.
|
|すすすすいません,なんか偉そうな...^^;
|「なひは,」を先頭に補ってください.

いやあ,そんなに悪い用語じゃないと思いますけどねえ.

|ところで...
|
|class Foo
|  Baz = 1; baz = 2
|  class Bar
|    Baz = 3; baz = 4
|    p Baz, baz
|  end
|  p Baz, baz
|end
|p aFoo = Foo.new()
|
|において,Bazについてだけ
|「warning: already initialized constant Baz」と指摘する
|(ただしちゃんとスコープはネストする)のは,
|想定されている動作でしょうか.

これは想定されている(そうしようと思ってそうなっている)動作で
す.ただし,「望ましい姿」とか「理想の姿」とかだと違うかも.

内側のクラス/モジュールは外側のクラスの定数が見えるので,同
名の定数を定義すると外側の定数を隠しちゃうんですよね.それを
嫌っての警告なんですが,たとえばネストした変数で外側をシャド
ウする言語で警告を出さないものはいくらでもあるわけで,その点
から考えると警告を出す必要はないのかも.

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