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