Advanced Classroom
2016.01.10 09:45

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

Views 985 Votes 0 Comment 0
?

Shortcut

PrevPrev Article

NextNext Article

Larger Font Smaller Font Up Down Go comment Print
?

Shortcut

PrevPrev Article

NextNext Article

Larger Font Smaller Font Up Down Go comment Print

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년] (예전자료를 검색해볼 수 있습니다)

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

?

List of Articles
No. Category Subject Author Date Views Votes
Notice Beginner Classroom 게임제작강좌 A-Z 색인 (2016.1.24 ver) 2 file 천무 2016.01.12 8178 1
78 Advanced Classroom [RMMV] 크로노 엔진(Chrono Engine) 플러그인 사용법 1 러닝은빛 2017.07.16 4051 2
77 Advanced Classroom [MV플러그인] Armor Scaling 강의 1 file 백난화백 2016.02.13 3886 2
76 Advanced Classroom [MV플러그인] Action Sequence 강의 5 file 백난화백 2016.02.12 5932 1
75 Advanced Classroom [동영상] 스크립트 나도좀 잘해보자 -1- 1 file 천무 2016.02.04 1911 1
74 Advanced Classroom PIXI Filter 총정리 (PIXI 2.2.9) 4 file 러닝은빛 2016.01.18 18968 3
» Advanced Classroom [RGSS2 강좌] 기초편 2. 변수와 상수 천무 2016.01.10 985 0
72 Advanced Classroom [RGSS2 강좌] 기초편 1. 소개 file 천무 2016.01.10 1233 0
71 Advanced Classroom Rpg Maker MV 함수 리스트(공식포럼) 2 plam 2016.01.10 1579 1
70 Advanced Classroom 타이틀에 동영상을 넣는 플러그인 사용법 5 file 러닝은빛 2016.01.08 2918 1
69 Advanced Classroom RPG Maker MV 메모리 누수 문제 해결법 6 러닝은빛 2016.01.07 5069 1
68 Advanced Classroom XP to MV 컨버터 사용법 3 file 러닝은빛 2015.12.28 3110 0
67 Advanced Classroom 기본 게임 폰트를 다른 폰트로 바꾸기 5 file 러닝은빛 2015.12.21 7829 0
66 Advanced Classroom 처음부터 전체화면으로 시작하기 3 file 러닝은빛 2015.12.21 4642 0
65 Advanced Classroom [RPG MV] 타이틀 메뉴 일부 없애기 9 박야옹 2015.12.20 4081 1
64 Advanced Classroom [RPGMV Plugin 영상] 무작정 해보기 "Gameus' Quest System" 7 천무 2015.12.20 2053 0
63 Advanced Classroom [RPGMV Plugin 영상] 무작정 해보기 "심플ATB" 2 천무 2015.12.20 1373 0
62 Advanced Classroom VX Ace to MV 컨버터 사용법 ( .rvdata2 → .json ) 10 file 러닝은빛 2015.12.14 7681 0
61 Advanced Classroom [RPGMV Plugin 영상] 한국어 조사처리, 해상도변경 플러그인!! 2 천무 2015.12.12 1644 0
60 Advanced Classroom [소공지] 플러그인 무작정 해드린다 진행해봅니다. 2 천무 2015.12.09 846 0
59 Advanced Classroom [RPGMV Plugin 영상] 한글이름 입력, 전투속도증가 플러그인!! 4 천무 2015.12.09 2194 0
Board Pagination Prev 1 2 3 4 Next
/ 4


[privacy statements] | [Terms of Use] | [Contact us] | [Sponsorship] | [Indiside History]

Copyright © 1999 - 2016 INdiSide.com/CL3D Co., Ltd. All Rights Reserved.
Owner : Chunmu(Jiseon Lee) | kernys(Wonbae Kim) | Sasinji(Byungkook Kim)