고급강의실
2016.01.10 09:45

[RGSS2 강좌] 기초편 2. 변수와 상수

조회 수 614 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

RGSS2 강좌

 2. 변수와 상수
1. 변수는

변수는 값 (객체)에 붙여진 이름 같은 것입니다. 
이렇게 이름을 붙이는 것으로, 변수에서 객체를 참조 할 수 있습니다. 
참조라는 것은 데이터 자체가 아니라 개체가있는 장소 나 식별 번호를 의미합니다. 
그리고 그 오브젝트를 취득하는 것을 볼라고합니다. 

변수는 4 종류가 프리픽스 (접두사)에 의한 자구 규칙이 있습니다. 
또한 초기화되지 않은 상태에서도 사용할 수 있고 그 때의 값은 nil입니다. 

 
2. 로컬 변수

아마도 가장 많이 사용되는 변수라고 생각합니다. 
이 변수는 가장 단명으로 할당 된 장소에서만 사용할 수 있습니다. 

초기화되지 않은 때의 값은 nil하지만, 초기화되지 않은 변수는 메소드와 구별 할 수 없기 때문 NameError가 발생합니다. 
대입식이 있으면, 비록 실행되지 않아도 변수 판별됩니다. 

 var = 1 if false # 실행되지 않는다
 def method
   var
 end

 p var # => nil
 p method # => ERROR
 
3. 인스턴스 변수

앞에 @가 붙은 변수는 인스턴스에서 액세스 할 수 있습니다. 
이 변수는 개체마다 다른 값을 유지합니다. 

 class Hoge
   attr_accessor ​​: value
   def initialize
     @value = 0
   end
 end

 h1 = Hoge.new
 h2 = Hoge.new

 p h1.value, h2.value # => 0 0
 h1.value = 3
 p h1.value, h2.value # => 3 0


또한 클래스의 인스턴스 생성하여 
클래스 인스턴스 변수로 할 수 있습니다. 
인스턴스 변수 라기보다는 클래스 변수에 가깝습니다. 
클래스 변수와의 차이는 상속 된 없다는 것입니다. 

 class A
   @a = 1
   @@ b = 3
   def self.a
     @a
   end
   def self.b
     @@ b
   end
 end
 class B <A
 end

 p Aa, Ba # => 1, nil
 p Ab, Bb # => 3 세

클래스 인스턴스 변수는 클래스 메소드를 정의하고 액세스하십시오.

 
4. 클래스 변수

앞에 @@가 붙은 변수는 클래스마다 값이 유지됩니다. 
또한이 변수는 서브 클래스에 상속됩니다.

 class A
   @@ value = 0
   def initialize
     @@ value + = 1
   end
   def value
     @@ value
   end
 end
 class B <A
 end

 a = A.new
 p a.value
 b = A.new
 p a.value
 c = B.new
 p a.value, b.value, c.value # => 1, 2, 3
 
5. 전역 변수

앞에 $가 붙여진 변수는 프로그램 종료까지 값을 유지하고 
어디서나 액세스 할 곳이 있습니다. 

 $ global = 0
 class Hoge
   $ global = 1
   def plus
     $ global + = 1
   end
 end

 Hoge.new.plus
 Hoge.new.plus
 p $ global # => 3
 
6. 상수

상수는 그 이름과 같이 정해진 숫자입니다. 
프로그램 내에서 그 값이 변하지 않는 것을 정의되지만 다시 할당 할 수 있습니다. 
상수는 클래스에 대해 정의 할 수 어디서나 볼 수 있습니다. 

클래스 정의를 한 경우에도 정수가 선언되고, 그 상수 클래스 객체에 대한 참조가 만들어집니다. 
::에서 클래스 모듈의 상수를 외부 참조 · 대입 할 수 있습니다. 

 HOGE = 0
 class A
   HOGE = 1
 end
 class B <A
   HOGE = 2
   def const
     # self 상수 A 클래스의 상수 최상위 상수
     p HOGE, A :: HOGE :: HOGE
   end
 end

 p HOGE, A :: HOGE, B : HOGE # => 0, 1, 2
 B.new.const # => 2, 1, 0
 # 클래스 이름도 상수이므로 변경되면 클래스가 사라집니다.
 A = nil # => WARNING
 A.new # => NoMethodError
 
7. 변수의 범위

같은 변수 이름이 유효한 범위를 범위라고합니다. 
이 범위의 차이에서 변수 이름이 바뀌 었다고 생각합니다. 
로컬 범위 인스턴스 범위 클래스 범위 글로벌 범위 등. 

이 밖에도 이터레이터 (반복)에 새로운 변수 범위가 생성됩니다. 
이 블록 내에서 정의 된 지역 변수는 블록 밖에서는 정의되어 있지 않습니다. 
그러나 메소드의 지역 변수는 블록 내에서 참조 할 수 있습니다. 
그래서 블록 외부에서 사용하는 변수 이름을 사용하는 경우주의하십시오. 

블록이라는 것은 {...}로 둘러싸인 부분입니다. 물론 do ... end도 포함되어 있습니다. 

 a = 1
 (0 ... 10) .each {| i | a = i}
 pa # => 9
 pi # => ERROR

for-in은 each 메소드를 호출하는 구문입니다 만, 이쪽은 새로운 변수 범위를 작성하지 않습니다.

 a = 1
 for i in 0 ... 10
   a = i
 end
 pa # => 9
 pi # => 9

 

* 본강의는 번역본 강의입니다. 원문은 아래 출처에서 확인가능합니다.

출처 : http://cacaosoft.web.fc2.com/tkool/lecture/rgss2/002.html

Who's 천무

profile

도움이 필요하면 메일이나 민원실 이용해주세요.(If you need help, You can use Help desk and send mail.)

E-Mail : chunmu1@naver.com

Helpdesk : http://indiside.com/help_board

자료다운로드 문제는 민원실에 해당자료주소와 함께 요청해주시면 최대한 다운로드 복구를 해드리겠습니다.

[주요 서비스 링크]

- 아이콘 등록하기 방법 알아보기(닉네임앞에 개성있는 아이콘을 달 수 있습니다)

- 창조도시 예전자료검색[2005~2010년] (예전자료를 검색해볼 수 있습니다)

- 네코데브 에전자료검색[2013~2015년]

- 인디사이드 이용안내(인디사이드 이용방법을 알려드립니다)

- 제2회 인디사이드 게임 제작대회 공지보기

[주요 외부 서비스 링크] - 등록해두시면 창도네코의 주요내용이 배달됩니다.

- 인디사이드 페이스북

- 인디사이드 트위터

?

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수 추천 수
공지 초급강의실 게임제작강좌 A-Z 색인 (2016.1.24 ver) 2 file 천무 2016.01.12 7372 1
78 고급강의실 [RMMV] 크로노 엔진(Chrono Engine) 플러그인 사용법 1 러닝은빛 2017.07.16 3576 2
77 고급강의실 [MV플러그인] Armor Scaling 강의 1 file 백난화백 2016.02.13 3598 2
76 고급강의실 [MV플러그인] Action Sequence 강의 5 file 백난화백 2016.02.12 5642 1
75 고급강의실 [동영상] 스크립트 나도좀 잘해보자 -1- 1 file 천무 2016.02.04 1712 1
74 고급강의실 PIXI Filter 총정리 (PIXI 2.2.9) 4 file 러닝은빛 2016.01.18 18676 3
» 고급강의실 [RGSS2 강좌] 기초편 2. 변수와 상수 천무 2016.01.10 614 0
72 고급강의실 [RGSS2 강좌] 기초편 1. 소개 file 천무 2016.01.10 843 0
71 고급강의실 Rpg Maker MV 함수 리스트(공식포럼) 2 plam 2016.01.10 1406 1
70 고급강의실 타이틀에 동영상을 넣는 플러그인 사용법 5 file 러닝은빛 2016.01.08 2578 1
69 고급강의실 RPG Maker MV 메모리 누수 문제 해결법 6 러닝은빛 2016.01.07 4731 1
68 고급강의실 XP to MV 컨버터 사용법 3 file 러닝은빛 2015.12.28 2714 0
67 고급강의실 기본 게임 폰트를 다른 폰트로 바꾸기 5 file 러닝은빛 2015.12.21 7259 0
66 고급강의실 처음부터 전체화면으로 시작하기 3 file 러닝은빛 2015.12.21 4103 0
65 고급강의실 [RPG MV] 타이틀 메뉴 일부 없애기 9 박야옹 2015.12.20 3677 1
64 고급강의실 [RPGMV Plugin 영상] 무작정 해보기 "Gameus' Quest System" 7 천무 2015.12.20 1878 0
63 고급강의실 [RPGMV Plugin 영상] 무작정 해보기 "심플ATB" 2 천무 2015.12.20 1156 0
62 고급강의실 VX Ace to MV 컨버터 사용법 ( .rvdata2 → .json ) 10 file 러닝은빛 2015.12.14 6965 0
61 고급강의실 [RPGMV Plugin 영상] 한국어 조사처리, 해상도변경 플러그인!! 2 천무 2015.12.12 1431 0
60 고급강의실 [소공지] 플러그인 무작정 해드린다 진행해봅니다. 2 천무 2015.12.09 677 0
59 고급강의실 [RPGMV Plugin 영상] 한글이름 입력, 전투속도증가 플러그인!! 4 천무 2015.12.09 1918 0
Board Pagination Prev 1 2 3 4 Next
/ 4






[개인정보취급방침] | [이용약관] | [제휴문의] | [후원창구] | [인디사이드연혁]

Copyright © 1999 - 2016 INdiSide.com/(주)씨엘쓰리디 All Rights Reserved.
인디사이드 운영자 : 천무(이지선) | kernys(김원배) | 사신지(김병국)