는 :루비 : 왜 이런 방식으로 작동합니까? 이 코드에서
는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
를 제거하고 세 번째 줄에 @@a = 0
직후 @@a = @@a + 1
이있는 경우, 출력은 1과 1 나는 알고 초기화 후 객체 인 경우 initialize
메서드는 A.new
을 호출 한 후 첫 번째 메서드로 실행되지만 클래스 변수 @@a
이 어떻게 처리되는지는 잘 모르겠습니다.
메서드 내에서 @@a = @@a + 1
을 래핑하지 않은 경우 왜 @@a
변수가 자동 증가하지 않습니까? 당신이 A.new
, @@a = 0
및 @@a = @@a + 1
=> 1 = 0 + 1을 호출 한 후에 증가하기 때문에 의미가 있습니다. b = A.new
에 대해, 당신은 반복하고 2를 얻습니다. 어떤 이유로 이런 일이 일어나지 않습니다. 왜 모르겠어요.