여태 스크립트를 만지면서 이런줄은 몰랐네요... ;;
class A
attr_accessor :a
def initialize
b = [1,2,3]
self.a = b
b[0] += 100
p self.a
end
end
A.new
exit
라는 것을 넣을 경우 변경된 값은 b이지만 a도 함께 수치가 바뀝니다.
여기서 a가 구지 함수일 필요는 없고 변수라도 상관없죠... 뭐 그게 그거입니다만 ;
그런데 여기서 b가 array가 아니라 integer였다면.
즉,
class A
attr_accessor :a
def initialize
b = 3
self.a = b
b += 100
p self.a
end
end
A.new
exit
로 바꾸게되면 여기선 a는 b의 값을 따르지않게됩니다.
그 외에 Sprite라던가 Font같은 것들도 그런데요.
나름대로 생각하자면 이게 class를 지정한 것이기 때문에 포인터같은 방식으로 주소만 복사되는 것이 아닌가 합니다만...
정확한 이유 좀 알 수 있을까요?
저도 제 생각인데...
여러 객체를 가지거나 혹은 가질 수 있는 경우는 그 주소만 참조하는게 아닌가 하네요.
배열이나 클래스 해시등등 객체의 묶음으로 정의되는 경우는 참조만 하더군요.
그에 비해서 숫자나 문자등 단일객체일 경우에는 그 내용이 복사되는듯 하구요....음...뭐...그냥 생각입니다;;;