질문과 답변

Extra Form

여태 스크립트를 만지면서 이런줄은 몰랐네요... ;;

 

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를 지정한 것이기 때문에 포인터같은 방식으로 주소만 복사되는 것이 아닌가 합니다만...

 

정확한 이유 좀 알 수 있을까요?

Comment '3'
  • ?
    허걱 2010.10.17 20:55

    저도 제 생각인데...

    여러 객체를 가지거나 혹은 가질 수 있는 경우는 그 주소만 참조하는게 아닌가 하네요.

    배열이나 클래스 해시등등 객체의 묶음으로 정의되는 경우는 참조만 하더군요.

    그에 비해서 숫자나 문자등 단일객체일 경우에는 그 내용이 복사되는듯 하구요....음...뭐...그냥 생각입니다;;;

  • ?
    허걱 2010.10.17 21:02

    아...  지금 읽었는데...  위에서 self.a  라고 하는건 함수가 아닌 변수를 가리키고 있습니다.

    위에서 attr_accessor :a  라고 a라는 변수를 허용하겠다라는 선언이 있고 self.a = b  라고 하는곳에서 a가 생성(b로 초기화)되었네요.  그래서 self.a  라고 변수로 사용되고 있네요. 따라서 a는 @a  와 같은 클래스 변수의 역할을 하고 있는...  변수입니다.

  • ?
    녹색주머니 2010.10.17 22:45

    흐음... 역시 그런걸까요...;

    저기에 attr_accessor 로 선언한 놈은 다른 곳에서 테스트하던 상황을 그대로 따오다보니 끌어오게된거지 별 의미는 없답니다;

     

    이거 복사해서 쓸때가 많으니 복제하는 습관을 길러야겠네요...;

     

    Sprite같은 경우에는 clone은 안되는데 array에 넣으면 복제가 되지만 과감히 주소만 따오더군요 -_- ;;;


List of Articles
종류 분류 제목 글쓴이 날짜 조회 수
공지 묻고 답하기 가이드 습작 2014.06.14 12452
기타 기타 vx ace에서 플에이어가 직접 커스터마이징 할수 있는 기능이 있을까요? file 묘윤 2023.04.08 41
플러그인 추천 RMMV MV에서 캐릭터 두 명의 동시 전투를 가능하게 하는 플러그인이 있을까요? file chichichi 2023.04.08 47
이벤트 작성 RMMV 대화 도중 대화창을 숨기는 기능이 있을까요? 1 벨로님 2023.04.05 83
에러 해결 RMVXA 스팀 VXAce를 실행하는데 계속 안 되고 켜질 때도 저절로 꺼집니다. file DefaultName 2023.04.01 37
이벤트 작성 RMMV 탐지기를 만들고 싶습니다. GDS아크 2023.04.01 35
턴제 전투 RMMV 프론트뷰 전투에서 액터(주인공) 배틀러 cg를 넣고 싶습니다 1 file MYHOME'SHAPINESS 2023.03.31 60
제작툴 구매 툴선택 안녕하십니까 스팀 할인 하길래 입문이 해보고 싶어서 툴질문 있습니다! 1 벨로님 2023.03.30 82
플러그인 추천 RMMZ 일정시간동안 조작이 없을시에 이벤트가 자동으로 발생하게 할 수 있을까요? 나랑드 2023.03.30 61
이벤트 작성 RMVX 화면을 1080으로 바꿨더니 대화창이 너무 작아 키우고 싶습니다 file 박스레인지 2023.03.29 58
이벤트 작성 RMMV MV 이벤트 모션이 끊겨요 thddo 2023.03.27 41
기타 RMMV 기록하는 플러그인있나요? 1 백월화(白月華) 2023.03.26 38
기타 툴선택 rpg vx ace 사용하다가 mv로 넘어가려고 생각중입니다. 1 머리큰두두 2023.03.26 60
에러 해결 RMMZ 배포 파일 실행오류 마야d 2023.03.25 25
기본툴 사용법 RMMZ 타이틀 화면제거 2 마야d 2023.03.25 57
스크립트 작성 RMMV 세이브를 누르면 특정 스위치를 끈 상태로 저장하는법 5 알만툴탐구 2023.03.20 95
플러그인 사용 RMMV mv 캐릭터모션할때마다 깜빡이는데 해결법있나여? 1 twrr 2023.03.14 59
이벤트 작성 RMMV 달리는 모션 넣는 법을 모르겠습니다. 1 먹사 2023.03.12 65
기타 RMMV 대화창 폰트바꾸는법좀.. 백월화(白月華) 2023.03.12 139
스크립트 추천 기타 RPG게임 DB구성 질문 데브조 2023.03.11 32
에러 해결 RMMV 메뉴커스텀 후 세이브 불어오기를 하면 메뉴창부터 떠요... 하하이 2023.03.05 105
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 ... 516 Next
/ 516