메뉴 건너뛰기

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

[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
145 또질문 [2] 쿠로쇼우 2008-09-29 2854
144 똥똥배의 게임대회 이야기(2) [2] 혼돈 2007-02-07 2816
143 DirectX 창모드에서 화면 지워지는 문제 [7] file 똥똥배 2010-12-12 2790
142 질문요.C++ [7] 질문자01 2007-05-10 2729
141 SRPG을 구현하게 되면 ... [3] 짜스터 2010-10-05 2708
140 퀴즈소스입니다 허클베리핀님 라컨 2005-08-23 2546
139 2중 for문을 돌릴 때 [3] 똥똥배 2011-04-06 2539
138 이상하군요. [2] 대슬 2008-05-16 2490
137 그림 출력의 순서를 알고 싶습니다. [3] X-tra 2008-03-12 2466
136 데이터 축소에 대하여 [2] 짜스터 2010-10-13 2430
135 흥크립트 기초 질문. [2] 장펭돌 2007-12-03 2430
134 흥크립트 키입력 질문 [1] A.미스릴 2008-03-15 2363
133 흥크립트 0.9 새 기능 소개 [3] file 혼돈 2007-10-15 2289
132 저는 사실 이걸 잘 못해요. [3] 앟랄 2008-03-26 2282
131 명령문 질문드립니다. [1] X-tra 2008-03-26 2244
130 '@클릭'이거 어떻게 사용하는거죠? [4] 네모상자 2008-01-26 2244
129 흥크립트 Ver0.9 변수 안의 변수 기능 [2] 혼돈 2007-10-16 2208
128 조금씩 게임 소스가 완성 되어 가는데요. [2] 짜스터 2010-11-16 2188
127 웹 프로그래밍을 배우려고 합니다. [2] Kadalin 2008-03-22 2171
126 Divx6를 받아서 인코딩을 하려는데... 에러뜸... [3] 장펭돌 2008-02-09 2154