このコードでは:
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
def initialize ... end
出力は 1 と 2 です。しかし、3 行目のandの@@a = @@a + 1
直後を削除すると、出力は1@@a = 0
と 1 になります。クラス変数がどのように処理されているかよくわかりません。initialize
A.new
@@a
メソッド内でラップし@@a
ていないのに、変数が自動インクリメントしないのはなぜですか? つまり、 、、 and => 1 => 0 + 1を呼び出した後、 を繰り返して 2 を取得するため、インクリメントするのは理にかなっています。これは何らかの理由で発生せず、その理由はわかりません.@@a = @@a + 1
initialize
A.new
@@a = 0
@@a = @@a + 1
b = A.new