고급강의실
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
152 초급강의실 [동영상] 게임을만들자 (1편) - 시작해봅시다- 6 천무 2016.01.11 5697 5
» 고급강의실 [RGSS2 강좌] 기초편 2. 변수와 상수 천무 2016.01.10 614 0
150 고급강의실 [RGSS2 강좌] 기초편 1. 소개 file 천무 2016.01.10 843 0
149 고급강의실 Rpg Maker MV 함수 리스트(공식포럼) 2 plam 2016.01.10 1406 1
148 고급강의실 타이틀에 동영상을 넣는 플러그인 사용법 5 file 러닝은빛 2016.01.08 2578 1
147 고급강의실 RPG Maker MV 메모리 누수 문제 해결법 6 러닝은빛 2016.01.07 4731 1
146 초급강의실 [동영상] RPG Maker MV 튜토리얼 강좌 18화 적 제작 및 특정지역 전투시스템 5 file 작긔 2015.12.30 1636 1
145 고급강의실 XP to MV 컨버터 사용법 3 file 러닝은빛 2015.12.28 2714 0
144 초급강의실 [동영상] RPG Maker MV 튜토리얼 강좌 17화 글자 입력 퍼즐 7 file 작긔 2015.12.28 2426 1
143 초급강의실 [동영상] RPG Maker MV 튜토리얼 강좌 16화 아이템 응용 5 file 작긔 2015.12.25 2620 3
142 초급강의실 [동영상] RPG Maker MV 튜토리얼 강좌 15화 상자와 아이템 3 file 작긔 2015.12.25 2800 1
141 초급강의실 [동영상] RPG Maker MV 튜토리얼 강좌 14화 버튼 퍼즐 5 file 작긔 2015.12.23 2109 0
140 초급강의실 [동영상] RPG Maker MV 튜토리얼 강좌 13화 버튼 file 작긔 2015.12.23 1385 0
139 초급강의실 [동영상] RPG Maker MV 튜토리얼 강좌 12화 숫자암호 1 file 작긔 2015.12.23 1562 0
138 초급강의실 [동영상] RPG Maker MV 튜토리얼 강좌 11화 물체 움직이기 응용 2 file 작긔 2015.12.23 1331 0
137 초급강의실 [동영상] RPG Maker MV 튜토리얼 강좌 10화 물체 움직이기 file 작긔 2015.12.23 1450 0
136 초급강의실 [동영상] RPG Maker MV 튜토리얼 강좌 9화 타이머 file 작긔 2015.12.23 1571 0
135 초급강의실 [동영상] RPG Maker MV 튜토리얼 강좌 8화 추적이벤트 file 작긔 2015.12.23 1818 0
134 초급강의실 [동영상] RPG Maker MV 튜토리얼 강좌 7화 스위치를 이용한 지형만들기 file 작긔 2015.12.23 1604 0
133 초급강의실 [동영상] RPG Maker MV 튜토리얼 강좌 6화 스위치의 응용 7 file 작긔 2015.12.22 4158 2
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 Next
/ 10






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

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