8

Ruby のクラスのクラス変数とインスタンス変数の違いを理解しています (と思います)。

そのクラスの外側からクラスのインスタンス変数にどのようにアクセスできるのか疑問に思っています。

内部から (つまり、インスタンス メソッドではなくクラス メソッド内で) 直接アクセスできますが、外部からアクセスする方法はありますMyClass.class.[@$#]variablenameか?

Rubyを学んでいて、それが可能かどうか疑問に思っているだけで、これを行う特別な理由はありません。

4

3 に答える 3

8
class MyClass

    @my_class_instance_var = "foo"

    class << self
        attr_accessor :my_class_instance_var
    end

end

puts MyClass::my_class_instance_var

前述の結果は次のとおりです。

>> foo

Arkku は、クラスの外部からクラスインスタンス変数 (@) ではなく、クラス変数 (@@) にアクセスする方法を示したと思います。

私はこのエッセイから前述のことを引き出しました: Seeing Metaclasses Clearly

于 2012-03-30T18:02:09.633 に答える