창작에 관련된 질문이나 간단한 팁, 예제를 올리는 곳
[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
뭔가 자세히 설명하고 싶었는데 제 능력이 부족해서 잘 되었을지 모르겠네요 ;_;
다음 링크(영어)에 테이블에 대해 자세히 설명되어있지는 않지만.. 테이블로 할 수 있는 몇 가지 예제에 대해 나와 있습니다.