프로그래밍 언어/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 키워드로 마무리 해야 한다.