프로그래밍 언어/Lua
Lua 3. 루아의 자료형 및 문법 (주석, 변수, 조건문, 반복문, 함수)
yozura
2024. 7. 24. 01:38
반응형

자료형
형식 | 값 | 설명 |
---|---|---|
nil | nil | - 값이 없음을 의미한다. - 조건식에서 사용할 경우 false 의 의미로도 사용될 수 있다. |
number | 64bit 실수형(float) or 64bit 정수형(long) | - 5.3 버전 이전까지는 오로지 실수형으로만 정의 된다. (정수형이 없음) - 5.3 버전 이후부터는 어떤 값을 대입하느냐에 따라 정수형 or 실수형이 된다. |
string | 문자열 | - 문자열 수정이 불가능하다. - 문자열에 대해 연산할 경우 새로운 문자열이 만들어진다. |
boolean | true or false | - 참과 거짓을 구분한다. |
function | 함수 | - 변수에 함수를 입력할 수 있다. - 함수의 인자에 함수를 전달할 수 있다. |
table | 연관 배열 자료 구조 | - 연관 배열을 구현한 것으로 루아의 유일한 자료 구조다. - 다양한 자료 구조(배열, 딕셔너리, 집합 등)를 표현할 수 있다. |
userdata | C/C++ 기능 or 사용자 정의 타입 & 리소스 | - C/C++ 기능을 호출할 때 변수에 저장 & 참조하는 데이터 구조 - C/C++ 과 상호작용 할 때 사용됨. |
thread | 코루틴(Coroutine) | - 비동기적으로 실행되는 코드에 사용됨. - running, suspended, normal, dead 상태를 가진다. |
문법
루아에서 세미 콜론 ;
은 문장의 종료를 의미하지만 한 줄에 하나의 문장만 사용할 경우 입력하지 않아도 코드는 동작한다.
주석
-- 한 줄 주석입니다.
print("Hello, World!")
--[[
주석 뭉치입니다.
print("Hello, Lua!")
]]
- 한 줄 주석은
--
로 처리한다. - 여러 줄 주석은
--[[
로 시작해서]]
로 끝난다.
변수
local nilval = nil
local num1 = 50
local num2 = 3.1
local bool1 = true
local bool2 = not bool1
local tbl = {}
x, y, z = 10, 2.1, 30
print(x, y, z) -- 10, 2.1, 30
local a, b = 10, 20
print(a, b) -- 10, 20
a, b = b, a -- Swap
print(a, b) -- 20, 10
- 루아는 동적 프로그래밍 언어로서 변수에는 타입이 없고 값에만 타입이 존재한다.
- 기본적으로 변수 선언 시 전역 변수로 선언되며 변수명 앞에 local 키워드를 사용하면 지역 변수로 선언된다.
- 변수명 충돌 및 지역 관리를 위해 지역 변수를 사용하는 것이 권장된다.
조건문
local x = 10
if x > 5 then
print("x is greater than 5")
elseif x < 5 then
print("x is less than 5")
else
print("x is 5")
end
local y = "Lia"
if y ~= "Lua" then
print("y isn't Lua")
elseif y == "Lua" then
print(y)
end
- 루아에는 C언어의
switch
구문이 없어if ~ elseif ~ end
구문으로 처리한다. - 부정 관계는
~=
이며 동등 관계는==
으로 표현한다. - 조건문의 끝에는
end
키워드로 마무리 해야 한다.
반복문
for i = 1, 10 do
print(i)
end
local i = 1
while i <= 10 do
print(i)
i = i + 1
end
for
,while
반복문을 사용할 수 있다.- 반복문의 끝에는
end
키워드로 마무리 해야 한다. - 테이블 순회에 사용되는
pairs
,ipairs
보조 함수는 후술하겠다.
함수
function add(a, b)
return a + b
end
local sub = function(a, b)
return a - b
end
local function multiply(a, b)
return a * b
end
local function operation(func, a, b)
return func(a, b)
end
local c = add(10, 20)
print(add(c, 50))
local d = sub(10, 20)
print(d)
local f = operation(multiply, c, d)
print(f)
- 지역 함수, 전역 함수로 나뉘어 있다.
- 변수에 저장이 가능하며 저장된 변수는 일반 함수처럼 호출 할 수 있다.
- 함수의 인자에 함수를 받을 수 있으며 이는 C언어의 함수 포인터와 같이 동작한다.
- 함수의 끝에는
end
키워드로 마무리 해야 한다.