고급강의실
2013.09.16 06:34

RGSS 스크립트 강좌 입문 11 - 배열(Array)

조회 수 1701 추천 수 1 댓글 6
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 수정 삭제
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 수정 삭제
다수의 오브젝트를 하나로 묶어서 쓰고싶을때 배열을 사용할수있습니다.

1. 배열

배열은 [ ] 이런 괄호 안에 넣는걸로 만들수있는데요.
예를들면 이렇습니다.

a = [ "네이버", "구글", "야후" ]

여기서는 네이버, 구글, 야후 라는 3개의 캐릭터라인을 묶어서 a라는 변수에 대입하고있습니다.
배열안의 오브젝트는 다음과 같은 방법으로 열람할수있습니다.


a = [ "네이버", "구글", "야후" ]

p a [ 0 ]
print a [ 1 ]
print [ 2 ]

실행을 하면 

"네이버"
구글
2

라고 출력됩니다.
1행에서는 네이버, 구글, 야후를 a 라는 배열로 묶어주고 있습니다.
2행부터는 a 배열에서 오브젝트를 불러오는 작업인데요.
2행에서는 0번 네이버 를 p 함수로 불러내고 있습니다. 당연히 캐릭터라인의 따옴표까지 출력되야합니다.
3행에서는 print 함수로 불러내서 캐릭터라인이 표기되고 있지않습니다.
 4행째 에서는 어떤 배열을 불러내는지 지정하지않았기 때문에 2라고 표기 되는군요.

a[0] 나 a[1] 같은것들을 하나의 변수로 쓸수도 있습니다.
중요한건 여기서 p a [ n ] 처럼 n에 들어가는 숫자를 첨자 라고 하는데, 
첨자는 0부터 시작해서 왼쪽부터 0, 1, 2, 3... 순서로 번호가 매겨지기 때문에 배열을 불러올때는 이것을 꼭 기억해주시길 바랍니다.

이미 정의된 배열에 다른 수치나 캐릭터라인등을 대입할수있습니다. 

a = [ "네이버", "구글", "야후" ]

a [ 2 ] = "파란"

p a  

실행하면 [ "네이버", "구글", "파란" ]이 됩니다.
이미 "야후" 라는 오브젝트가 있지만 대입연산자에 의해 "파란" 으로 다시 대입되어서 출력결과와 같이 바뀌는것입니다.
이것은 변수와 기능이 같습니다.

만약 처음작성한 갯수의 첨자를 넘어가면 자동으로 배열이 확장됩니다.

a = [ "네이버", "구글", "야후" ]

a [ 3 ] = "파란"

p a 

실행하면  [ "네이버", "구글", "야후", "파란" ] 이 출력됩니다.
처음 작성할때의 배열의 요소는 3개였지만 a[3] 이라는 4번째첨자를 대입했기 때문에 자동적으로 a 배열은 4개의 요소를 가지게 되었습니다. 
그렇다면 범위를 늘려 6번째 첨자를 넣어보면 어떨까요.


a = [ "네이버", "구글", "야후" ]

a [ 5 ] = "파란"

p a 

이번엔 좀 다르게 출력결과가 [ "네이버", "구글", "야후", nil , nil ,"파란"  ] 이 되었습니다.
nil 이라고 하는것은 true와 false와는 다른 공백을 나타내는 함수입니다. true가 참, false가 거짓을 나타낸다면 nil은 무를 나타냅니다. 


2. 배열의 조작

배열은 array 클래스의 인스턴스 입니다. array 클래스에 정의 되어있는 메서드 몇개를 살펴보겠습니다.

배열의 요소수를 알고싶을때는 size 메서드를 사용합니다. 
일전에 size 메서드는 캐릭터라인의 글자수인 바이트수를 출력해주는 메서드였지만,
대상이 배열일때는 배열의 요소수를 출력해줍니다. 

a = [ "네이버", "구글", "야후" ]

p a .size

실행하게되면 3이 출력됩니다.
 a와 size사이에 있는 마침표는 메서드를 실행시킬때 사용하는 예약어입니다.

배열안에 특정한 오브젝트가 있을지 알고싶은경우에는 include? 라는 메서드를 사용합니다.

a = [ "네이버", "구글", "야후" ]

p a.include? "네이버"      # true
p a.include? ("구글")       # true
p a.include? "파란"         # false

include?를 한국어로 말하면 있습니까? 정도로 해석하면 되겠습니다. 
3행에서 괄호를 씌웠는데 괄호는 편의상 구분하기 쉬우라고 씌운것입니다. 뭐 씌우셔도 좋고 않씌우셔도 좋습니다.
4행째에서는 a 배열에는 없는 "파란"의 유뮤를 확인하고있습니다만 a에는 "파란"이 없기 때문에 false를 출력해주고 있습니다.

3. 배열의 루프

for 루프에서는 오브젝트 뿐만 아니라 배열을 루프시켜줄수도 있습니다.

a = [ "네이버", "구글", "야후" ]

for i in a

  p i

end

1행에서는 배열 a를 정의 해주고 있습니다.
2행에서는 i 라는 변수를 사용해서 a 를 돌려주고 있습니다. 
원래 for 루프에서는 for i in 1..5 와 같이 뒤에 범위가 들어가고 범위를 대입할 변수를 설정합니다만, 배열또한 같은방식으로 돌려줄수있습니다.
그리고 3행에서는 i를 출력하고 4행에서 루프를 종료하고있습니다.

실행하면 네이버, 구글, 야후가 차례대로 표시되고 종료됩니다.
?

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수 추천 수
공지 초급강의실 게임제작강좌 A-Z 색인 (2016.1.24 ver) 2 file 천무 2016.01.12 7373 1
32 고급강의실 RGSS 스크립트 강좌 입문 13 - 클래스(Class) 5 마니아 2013.09.16 2317 2
31 고급강의실 RGSS 스크립트 강좌 입문 12 - 연상 배열(Associative Array) 4 마니아 2013.09.16 1600 1
» 고급강의실 RGSS 스크립트 강좌 입문 11 - 배열(Array) 6 마니아 2013.09.16 1701 1
29 고급강의실 RGSS 스크립트 강좌 입문 10 - 그래픽 표시 4 마니아 2013.09.16 2183 0
28 고급강의실 RGSS 스크립트 강좌 입문 9 - 오브젝트(Object) 4 마니아 2013.09.16 1642 0
27 고급강의실 RGSS 스크립트 강좌 입문 7 ~ 8 - 함수(Function) 3 마니아 2013.09.16 1924 0
26 고급강의실 RGSS 스크립트 강좌 입문 6 - 루프(Loop) 2 마니아 2013.09.16 1586 0
25 고급강의실 RGSS 스크립트 강좌 입문 5 - 조건분기 4 마니아 2013.09.16 2131 0
24 고급강의실 RGSS 스크립트 강좌 입문 4 - 캐릭터 라인 4 마니아 2013.09.16 2274 1
23 고급강의실 RGSS 스크립트 강좌 입문 3 - 메서드(Method) 4 마니아 2013.09.16 1876 0
22 고급강의실 RGSS 스크립트 강좌 입문 2 - 수 3 마니아 2013.09.16 2256 0
21 고급강의실 RGSS 스크립트 강좌 입문 1 - 기초 개념 8 마니아 2013.09.16 4351 0
20 고급강의실 뮤's 실전 스크립팅 강좌 [5. 실전! 반복문을 응용하자!] 2 마니아 2013.09.16 1411 0
19 고급강의실 뮤's 실전 스크립팅 강좌 [4. 실전! 플래싱 메시지를 만들어보자] 3 마니아 2013.09.16 2081 0
18 고급강의실 뮤's 실전 스크립팅 강좌 [3. 기초 문법 다지기 (하)] 6 마니아 2013.09.16 1145 0
17 고급강의실 뮤's 실전 스크립팅 강좌 [2. 기초 문법 다지기 (중)] 3 마니아 2013.09.16 1371 0
16 고급강의실 뮤's 실전 스크립팅 강좌 [1. 기초 문법 다지기 (상)] 6 마니아 2013.09.16 2351 0
15 고급강의실 RGSS2 강좌 1 비형랑 2012.10.01 2528 0
14 중급강의실 [RPGVX ACE] 소재규격과 강의수록 1 2 비형랑 2012.10.01 3273 0
13 초급강의실 [RPG VX ACE] 초심자강의 1 1 비형랑 2012.10.01 3168 2
Board Pagination Prev 1 ... 4 5 6 7 8 9 10 Next
/ 10






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

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