なひです.

> From: Yukihiro Matsumoto [mailto:matz / netlab.co.jp]
> Sent: Tuesday, May 11, 1999 12:05 PM

> |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」と指摘する
> |(ただしちゃんとスコープはネストする)のは,
> |想定されている動作でしょうか.
> 
> これは想定されている(そうしようと思ってそうなっている)動作で
> す.ただし,「望ましい姿」とか「理想の姿」とかだと違うかも.

「そうしようと思ってそうなっている」点,理解しました.

> 内側のクラス/モジュールは外側のクラスの定数が見えるので,同
> 名の定数を定義すると外側の定数を隠しちゃうんですよね.それを

nested classの内側において,外側もある各種変数の見え方を整理すると,

  大域変数 ... 見える & 共有
  クラス定数 ... 見える & ネスト
  クラス変数 ... 見えない & ネスト(見えないんだからネストしてあたりまえ)
  ローカル変数 ... 見えない & ネスト(〃)

なわけですよね.で,
「見える & ネスト」という点で特殊(他と違う)であり,
また混同すると危険なこともあるため,
注意を喚起している,と理解しました.

現在のなひは,もっともな「注意」である,と感じます.

# 考えが浅い > ^^;;