代码之家  ›  专栏  ›  技术社区  ›  user200783

在Ruby中,我可以从实例方法中访问类实例变量吗?

  •  1
  • user200783  · 技术社区  · 6 年前

    下面的代码在类中设置一个类变量 C 从类方法,并显示可以从实例方法访问它:

    class C
      def self.set_a
        @@a = 1
      end
    
      def get_a
        @@a
      end
    end
    
    C.set_a
    C.new.get_a #=> 1
    

    如果我换了 @@a 类内方法 set_a 具有 @a ,以便它创建类实例变量而不是类变量,我是否仍然可以从实例方法中访问它 get_a ?

    1 回复  |  直到 6 年前
        1
  •  3
  •   mrzasa    6 年前

    我认为你不能直接引用它。类是对象,实例变量是对象的私有/内部变量。您可以使用 instance_variable_get 或者用getter方法包装它。

    在Rails中可以使用 class_variable macro 这有助于设置和访问类级变量。

    推荐文章