在这段代码中:
class A
@@a = 0
def initialize
@@a = @@a + 1
end
def to_s
@@a
end
end
a = A.new
p a
b = A.new
p b
输出是 1 和 2。但是如果我在第三行之后立即删除def initialize ... endand ,那么输出是 1 和 1。我知道在初始化对象后,该方法作为调用后的第一个方法执行,但是我'我不太确定如何处理类变量。@@a = @@a + 1@@a = 0initializeA.new@@a
@@a当我@@a = @@a + 1没有包裹在方法中时,为什么变量不自动递增initialize?我的意思是,增加它是有意义的,因为在你调用A.new,@@a = 0和@@a = @@a + 1=> 1 = 0 + 1b = A.new之后,你重复并得到 2。由于某种原因这不会发生,我不知道为什么.