Lua - 테이블: 강력한 데이터 구조의 관문

소개

안녕하세요, 야심 찬 프로그래머 여러분! 오늘 우리는 Lua 테이블의 세계로 흥미로운 여정을 떠납니다. 여러분의 친절한 이웃 컴퓨터 과학 교사로서, 저는 Lua 프로그래밍의 근간을 이루는 이 기본 개념을 안내해드리게 되어 기쁩니다.

Lua - Tables

Lua의 테이블은 스위스 아ーノ이와 같아요 - 다재다능하고 강력하며, 한 번 사용법을 배우면 그 없이 프로그래밍을 했던 시절을 의아해질 거예요! 함께 Lua 테이블의 비밀을 풀어보아요.

표현과 사용

테이블은 무엇인가요?

Lua에서 테이블은 주요 (그리고 유일한!) 데이터 구조입니다. 매우 유연하여 배열, 리스트, 사전, 집합, 그리고 심지어 객체로 사용할 수 있습니다. 마법의 컨테이너라고 생각해보세요! 거의 모든 것을 담을 수 있습니다!

간단한 예제를 시작해보겠습니다:

local myFirstTable = {1, 2, 3, 4, 5}
print(myFirstTable[1])  -- 출력: 1

이 예제에서 우리는 배열처럼 보이는 테이블을 생성했습니다. 하지만 Lua의 독특한 사실: 다른 프로그래밍 언어와 달리, Lua의 테이블은 인덱스 1에서 시작합니다, 0이 아닙니다!

테이블은 사전처럼 키-값 쌍을 저장할 수도 있습니다:

local person = {
name = "Alice",
age = 30,
city = "원더랜드"
}
print(person.name)  -- 출력: Alice
print(person["age"])  -- 출력: 30

점 표기법과 사각형 따옴표를 사용하여 값을 접근할 수 있어요.Soup을 먹는 것처럼 두 개의 숟가락을 사용하는 것과 같아요 - 편안한 방법을 사용하세요!

테이블 조작

요소 추가와 수정

Lua의 테이블은 불변하지 않으며, 생성 후에도 변경할 수 있습니다. 어떻게 하는지 보겠습니다:

local fruits = {"apple", "banana"}
fruits[3] = "cherry"  -- 새로운 요소 추가
fruits.orange = "citrus"  -- 키-값 쌍 추가
fruits.apple = "red fruit"  -- 기존 값을 수정

print(fruits[3])  -- 출력: cherry
print(fruits.orange)  -- 출력: citrus
print(fruits.apple)  -- 출력: red fruit

테이블의 유연성이 놀라운 것이 아닌가요? 실제 과일 바스켓처럼 자라나고 변합니다!

테이블 길이 확인

테이블의 요소 개수를 확인하려면 길이 연산자 (#)를 사용합니다:

local numbers = {10, 20, 30, 40, 50}
print(#numbers)  -- 출력: 5

하지만 주의하세요! 이 연산자는 순차적으로 numeric 키가 시작되는 배열에 대해 신뢰성 있게 작동합니다.

테이블 연결

Lua는 테이블을 연결하는便利한 연산자 table.concat()을 제공합니다. 테이블 요소의 마법의 접착제와 같아요!

local words = {"Hello", "world", "from", "Lua"}
local sentence = table.concat(words, " ")
print(sentence)  -- 출력: Hello world from Lua

여기서 우리는 words의 모든 요소를 공백으로 연결했습니다. 원하는 구분자를 사용할 수 있습니다!

추가와 제거

요소 추가

테이블에 요소를 추가하려면 table.insert()를 사용할 수 있습니다:

local shopping_list = {"milk", "bread"}
table.insert(shopping_list, "eggs")
table.insert(shopping_list, 2, "cheese")

for i, item in ipairs(shopping_list) do
print(i, item)
end
-- 출력:
-- 1 milk
-- 2 cheese
-- 3 bread
-- 4 eggs

"eggs"를 맨 뒤에 추가하고 "cheese"를 인덱스 2에 추가하는 방법을 보세요! 마치 장바구니에 몰래 물건을 넣는 것처럼!

요소 제거

요소를 제거하려면 table.remove()를 사용합니다:

local stack = {"plate", "bowl", "cup", "spoon"}
local removed = table.remove(stack)
print(removed)  -- 출력: spoon

removed = table.remove(stack, 1)
print(removed)  -- 출력: plate

for i, item in ipairs(stack) do
print(i, item)
end
-- 출력:
-- 1 bowl
-- 2 cup

젠장, 점성게 게임처럼 신중하게 조각을 제거하지 않으면 전체 구조가 무너질 수 있습니다!

테이블 정렬

Lua는 테이블을 정렬하는 내장 함수 table.sort()를 제공합니다. 기본적으로 오름차순으로 정렬합니다:

local fruits = {"banana", "apple", "cherry", "date"}
table.sort(fruits)

for i, fruit in ipairs(fruits) do
print(i, fruit)
end
-- 출력:
-- 1 apple
-- 2 banana
-- 3 cherry
-- 4 date

사용자 정의 정렬 함수를 제공할 수도 있습니다:

local numbers = {3, 1, 4, 1, 5, 9, 2, 6}
table.sort(numbers, function(a, b) return a > b end)

for i, num in ipairs(numbers) do
print(i, num)
end
-- 출력:
-- 1 9
-- 2 6
-- 3 5
-- 4 4
-- 5 3
-- 6 2
-- 7 1
-- 8 1

마치 개인 비서가 데이터를 원하는 대로 정리해주는 것처럼!

결론

그렇게 되었네요, 친구들! 우리는 Lua 테이블의 땅을 여행했고, 생성에서 조작, 연결에서 정렬까지 다뤘습니다. 테이블은 Lua 프로그래밍의 핵심이며, 이 튜토리얼이 여러분에게 힘과 유연성의 맛을 보여드렸기를 바랍니다.

기억하세요, 연습이 완벽을 만듭니다. 그러니 테이블을 만들고, 놀아보세요, 그리고 언제 그리되 테이블을 돌리는 마스터가 되실 거예요! 행복하게 코딩하시고, 여러분의 테이블이 항상 잘 구성되고 버그가 없기를 바랍니다!

Credits: Image by storyset