読者です 読者をやめる 読者になる 読者になる

ネストしたクラスの他のクラスへの参照の仕方について

ruby

もち ー [Ruby]内部クラスと外部クラスの解
http://d.hatena.ne.jp/omochist/20061102/1162475536 より

で,ふと思ったのですが

Hoge.class_eval %{ … }

じゃなくて,わざわざ

Hoge.class_eval %{ … }

って書いているのは,id:walf443さんの美学だったりするのかしら.美学重要よね.

一種の美学と言えば美学ですが、最近既存のクラスの再定義をするというのが流行ってるっぽいので
あのようなコードを書いた後で次のようなコードを追加すると動かなくなるのが嫌なわけです。

class Hoge
  class Piyo
    class Hoge
    end
  end
end

:! ruby inner_outer_class.rb
fugahoge
inner_outer_class.rb:36:in `hogera': (eval):2:in `hogera': uninitialized class variable @@x in Hoge::Piyo::Hoge (NameError)
from inner_outer_class.rb:13:in `hoge'
from inner_outer_class.rb:61

ということで下へ参照するときは::つけませんが、上のクラスを参照する際は::をつけたほうがよいのかなーと思ってます。