메뉴 건너뛰기

창작에 관련된 질문이나 간단한 팁, 예제를 올리는 곳

[Lua] 테이블

노루발

이것은 Lua 문법입니다. Love2D와는 관계가 없습니다. 

안녕하세요, 노루발입니다. 오늘은 테이블에 대해서 설명을 해보겠습니다.

 

테이블이란 쉽게 말해 변수를 묶은 겁니다.

Lua상에서 뭔가 쌈빡하게 테이블을 쓰는 법도 있는 듯 하지만 저는 그냥 타 언어의 배열처럼 씁니다.

그러므로 이제부터 제가 하는 설명은 배열에 대한 설명으로 보셔도 무방합니다.

 

여기서 잠깐 테이블의 필요성에 대해 알아보도록 하겠습니다.

예를 들어, Switch라는 변수가 있다고 칩시다.

1은 켜짐, 0은 꺼짐입니다. (뭐에 쓰는지는 묻지 말아주세요. 다 좋은 데 쓸 겁니다. :/ 그냥 그런 게 있다고 칩시다.)

이 변수가 10개 필요하다면? 배열 없이는 다음과 같이 해야 하지요...

Switch1 = 0 

Switch2 = 0 

Switch3 = 0 

... 

Switch9 = 0 

Switch10 = 0

 

하지만 테이블을 사용하면? For문으로 해결할 수 있습니다.

local a

Switch = {} 

for a = 1, 10 do

    Switch[1] = 0

end

 

만일 10개가 아니라 100개가 필요하다면 테이블을 사용하는 것이 훨씬 이득일 겁니다.

 

대충 테이블에 대해 살펴보았고, 테이블의 필요성에 대해 살펴봤으니 이제 테이블을 만들어 보겠습니다.

 

t = {} -- t라는 이름의 테이블을 만들었다고 알려줍니다.

t["키"] = 값

 

여기서 잠시, 키와 값에 대해 설명하겠습니다.

사우나에 가면, 옷장에 번호가 붙어 있습니다. 5번, 33번, 48번.. 이런 식으로요.

번호는 옷장 안의 내용물을 찾기 쉽게 해 줍니다.

테이블의 키도 마찬가지입니다. 키는 사우나 옷장에 붙어있는 번호와 같아서, 원하는 부분의 내용을 쉽게 꺼낼 수 있게 합니다.

키는 꼭 숫자일 필요는 없습니다. 아래 두 예 모두 맞는 예제입니다.

bulletx[1] = 30

player["status"] = "running"

 

값은 뭐냐고요? 테이블 안에 들어가는 겁니다.

위의 예제에서는 30이랑 "running"이 값이 될 수 있겠군요.

그리고, 테이블 안에 또 다른 테이블이 들어갈 수 있습니다.

예를 들어:

t[1] = {}

t[1][5] = 0

이런 것이 가능합니다.

 

슬슬 본격적으로 테이블을 사용하는 방법을 알려드리겠습니다.

변수를 테이블로 사용하겠다고 선언하는 것은 이미 봤습니다. 

예:

t = {} 

 

테이블 안에 값을 넣는 방법은, 일반적인 변수와 같습니다.

예: 

player["x"] = 30

 

값을 읽는 법도 일반적인 변수와 같습니다. 

 예:

print("플레이어의 X값:"..player["x"])

 

특정 키를 가진 테이블을 만들고 싶으면 아무것도 할 필요 없습니다. 그냥 값을 넣으면 됩니다.

유연하죠?

예:

local a

Switch = {} 

for a = 1, 10 do

    Switch[1] = 0

end

-- 이제 10개의 Switch가 만들어졌다.

Switch[11] = 0 --11번째 Switch다! 

 

가끔씩 모든 테이블의 내용을 불러오고 싶을 때가 있습니다. (모든 총알의 위치를 위쪽으로 올리는 것 같은..)

그 때는 #테이블이름 (위의 예제대로는 #t, #bulletx, #player)을 쓰면 테이블의 마지막 키를 알 수 있습니다.

예제 코드:

local a

t = {}

for a = 1, 30 do

    t[a] = "mumblemumble.." 

end

print(#t) 

 

결과:

30  

 

뭔가 자세히 설명하고 싶었는데 제 능력이 부족해서 잘 되었을지 모르겠네요 ;_;

다음 링크(영어)에 테이블에 대해 자세히 설명되어있지는 않지만.. 테이블로 할 수 있는 몇 가지 예제에 대해 나와 있습니다. 

lua-users.org/wiki/TablesTutorial

조회 수 :
1422
등록일 :
2013.09.17
08:13:58 (*.209.135.92)
엮인글 :
게시글 주소 :
https://hondoom.com/zbxe/index.php?mid=study&document_srl=703416
List of Articles
번호 제목 글쓴이 날짜 조회 수sort
125 흥크립트로 만든 예제 2 [2] file 대슬 2007-12-01 2118
124 게임 만들때는 게임 기획을 해야 합니다. [7] 똥똥배 2008-02-12 2106
123 흥크립트로 만든 예제 [1] file 대슬 2007-12-01 2051
122 [re] 혼돈님께 질문 혼돈 2007-12-25 2048
121 여러분 질문있어요. 성심성의껏좀 알려주세요 흑흑 [6] 케르메스 2006-02-11 2022
120 흑곰님 질문 [2] 라컨 2005-08-22 2015
119 흥크립트 클릭명령 질문입니다. [1] 카시 2008-03-18 2009
118 [질문]알만툴 게임 [1] 허클베리핀 2006-12-28 1974
117 질문 2가지+1 [2] file Wonder 2007-11-30 1964
116 cocos2d의 가비지 컬렉터 똥똥배 2012-02-07 1963
115 질문 있습니다.. C언어 인거 같은데 [7] 포오ㅏ로 2005-02-24 1957
114 cocos2d-x 외부파일을 이용한 한글 처리 [1] 똥똥배 2013-07-08 1938
113 흥크립트 if-else 문 흉내내기 [4] 똥똥배 2008-02-12 1933
112 [re] 흥크립트 개선점 [3] 똥똥배 2008-02-09 1928
111 밑에 포와로님의 질문 답 [4] 대슬 2005-02-24 1900
110 안녕하세요~ 질문하러 왔습니다. [6] X-tra 2008-03-09 1894
109 [번역] gamedev레딧의 Getting Started 문서 번역 [5] priling 2014-12-26 1892
108 흥크립트 원인불명 버그 [5] 흑곰 2008-01-23 1891
107 비베 질문 [2] 재피디 2005-09-10 1888
106 스크립트 질문좀 하겠습니다....이벤트에 대한것!! [2] 여유 2007-04-23 1859