次のようなルビークラスがあります。
class C
@@v = 1
class << self
p @@v # everything goes well here
end
end
class << C
# here I get an exception
# `singletonclass': uninitialized class variable @@v in Object (NameError)
# from a.rb:5:in `<main>'
p @@v
end
私の質問は次のとおりです。「オブジェクト (NameError) 内の初期化されていないクラス変数 @@v」という例外がありましたが、なぜ Ruby は Object(main) 内のクラス変数を検索するのですか?
ruby は常にメタクラスのクラス変数を外部で参照しているようです。