5

当我浏览 Rails 源代码时,它包含以下行:

@@autoloads = {}

@@在 Ruby中是什么意思?

4

3 回答 3

2

这意味着访问一个类属性(命名空间到类的属性),而不是实例属性(该类中每个实例化对象存在的属性)。

在您的示例中,@@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

键盘

于 2012-06-21T05:17:51.260 回答
1

@@ 标识一个类变量。

于 2012-06-21T05:18:03.780 回答
1

@@ 只是表示一个类变量。

类变量是在类的所有实例之间共享的变量。这意味着从此类实例化的所有对象仅存在一个变量值。

考虑类变量的另一种思维方式是在单个类的上下文中作为全局变量。

于 2012-06-21T05:30:17.790 回答