以下代码通过类方法在类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
?
答案 0 :(得分:3)
我认为您不能直接引用它。类是一个对象,实例变量是该对象的私有/内部对象。您可以在类上使用instance_variable_get
或将其包装在getter方法中来访问它。
在Rails中,您可以使用class_variable
macro来简化设置和访问类级变量的操作。