고급강의실
2016.01.10 09:45

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

조회 수 618 추천 수 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회 인디사이드 게임 제작대회 공지보기

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

- 인디사이드 페이스북

- 인디사이드 트위터

?

  1. 게임제작강좌 A-Z 색인 (2016.1.24 ver)

  2. [RMMV] 크로노 엔진(Chrono Engine) 플러그인 사용법

  3. [MV플러그인] Armor Scaling 강의

  4. [MV플러그인] Action Sequence 강의

  5. [동영상] 스크립트 나도좀 잘해보자 -1-

  6. PIXI Filter 총정리 (PIXI 2.2.9)

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

  8. [RGSS2 강좌] 기초편 1. 소개

  9. Rpg Maker MV 함수 리스트(공식포럼)

  10. 타이틀에 동영상을 넣는 플러그인 사용법

  11. RPG Maker MV 메모리 누수 문제 해결법

  12. XP to MV 컨버터 사용법

  13. 기본 게임 폰트를 다른 폰트로 바꾸기

  14. 처음부터 전체화면으로 시작하기

  15. [RPG MV] 타이틀 메뉴 일부 없애기

  16. [RPGMV Plugin 영상] 무작정 해보기 "Gameus' Quest System"

  17. [RPGMV Plugin 영상] 무작정 해보기 "심플ATB"

  18. VX Ace to MV 컨버터 사용법 ( .rvdata2 → .json )

  19. [RPGMV Plugin 영상] 한국어 조사처리, 해상도변경 플러그인!!

  20. [소공지] 플러그인 무작정 해드린다 진행해봅니다.

  21. [RPGMV Plugin 영상] 한글이름 입력, 전투속도증가 플러그인!!

Board Pagination Prev 1 2 3 4 Next
/ 4






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

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