Lua는 1993년 브라질 PUC-Rio에서 개발된 경량 스크립팅 언어다. 임베딩 목적으로 설계되어 C로 작성된 작은 인터프리터가 특징이다. 게임 개발, 임베디드 시스템, 네트워크 장비 설정에 광범위하게 사용된다.
핵심 특성
- •경량: 코어 인터프리터 약 250KB
- •임베딩: C/C++ 애플리케이션에 쉽게 통합
- •동적 타입: 타입 선언 불필요
- •일급 함수: 함수가 값으로 취급됨
- •메타테이블: 연산자 오버로딩, OOP 구현
기본 문법
lua
-- 변수와 타입 (nil, boolean, number, string, table, function)
local x = 42
local name = "Lua"
local isActive = true
-- 함수
local function greet(person)
return "안녕하세요, " .. person .. "!"
end
print(greet("세계"))
-- 테이블 (배열 + 딕셔너리)
local fruits = {"apple", "banana", "cherry"}
local person = {name="Alice", age=30}
for i, v in ipairs(fruits) do
print(i, v)
end
-- 메타테이블로 OOP
local Animal = {}
Animal.__index = Animal
function Animal.new(name, sound)
return setmetatable({name=name, sound=sound}, Animal)
end
function Animal:speak()
print(self.name .. " says " .. self.sound)
end
local dog = Animal.new("Rex", "Woof")
dog:speak() -- Rex says Woof
코루틴
lua
local co = coroutine.create(function()
for i = 1, 3 do
print("yield:", i)
coroutine.yield(i)
end
end)
coroutine.resume(co) -- yield: 1
coroutine.resume(co) -- yield: 2
coroutine.resume(co) -- yield: 3
사용 사례
| 영역 | 예시 |
|---|
| 게임 | World of Warcraft 스크립팅, Roblox |
| 네트워크 | Nginx (OpenResty), HAProxy |
| 임베디드 | NodeMCU (IoT), 라우터 펌웨어 |
| 게임 엔진 | LÖVE, Defold |
관련 개념