当我浏览 Rails 源代码时,它包含以下行:
@@autoloads = {}
@@
在 Ruby中是什么意思?
这意味着访问一个类属性(命名空间到类的属性),而不是实例属性(该类中每个实例化对象存在的属性)。
在您的示例中,@@autoloads
将在您的程序长度内持续存在。
class TestObj
@@prop = 0
def get_prop
@@prop
end
def increment_prop
@@prop += 1
end
end
a = TestObj.new
b = TestObj.new
a.increment_prop
puts b.get_prop # 1
@@ 标识一个类变量。
@@ 只是表示一个类变量。
类变量是在类的所有实例之间共享的变量。这意味着从此类实例化的所有对象仅存在一个变量值。
考虑类变量的另一种思维方式是在单个类的上下文中作为全局变量。