class Foo
@@default = "default"
p instance_variables
p class_variables
class << self
p instance_variables
p class_variables
# How do I access the @@default variable here?
end
end
2 に答える
2
他の場所でそれを行うのと同じ方法:@@default
。
何p ..
をすべきかわかりませんが(Rubyは私の母国語ではありません)、これは機能します
class Foo
@@default = "default"
class << self
puts "#{@@default}"
end
end
于 2010-10-19T21:01:06.967 に答える
1
この質問は、本質的に「メタクラスがその「実際の」クラスを参照する方法はありますか?」と尋ねるので、一種の興味深いものです。
そして、私が知る限り、答えは「いいえ」です。Rubyが保持するすべての「上向き」の祖先ポインターもメタクラスを指しているため、class_variables()
そのうちの1つで実行すると、そのクラスインスタンス変数がわかります。したがって、メタクラスコンテキストに入る前に、名前でオブジェクトを参照するか、ハンドルを確立する必要があります...
class Foo
@@default = "default"
@@me = self
p instance_variables
p class_variables
class << self
p instance_variables
p @@me.class_variables
end
end
于 2010-10-20T16:42:06.950 に答える