간단한 Lua 스크립트 문법

주석(comment)

Lua에서는 두 개의 대시 기호(--)를 사용하여 주석을 작성한다.

-- 나는 주석이다.

변수(variable)

변수는 선언과 동시에 초기화할 수 있다.

-- 변수 선언과 초기화

local num = 10
local str = "hello"

데이터 타입(data type)

Lua에서 데이터 타입은 크게 두 가지로 나뉜다. 하나는 기본 자료형이고, 다른 하나는 테이블다.

기본 자료형

  1. nil : 값이 없는 상태. (falsy)
  2. boolean : 참(true) 또는 거짓(false)
  3. number : 숫자
  4. string : 문자열
-- 기본 자료형 예제

local a = nil
local b = true
local c = 123
local d = "hello"

문자열 함치기

-- 문자열을 합치는 방법

local a = "Hello"
local b = "World"

print(a.." "..b) --HelloWorld

테이블

Lua에서 테이블은 객체 또는 배열의 역할을 수행한다. 다른 언어의 딕셔너리(dictionary)나 맵(map)과 비슷한 역할을 한다.

-- 테이블 예제

local person = {
    name = "freevue",
    age = 327,
    skills = {"html", "css", "javascript", "typescript"}
}

연산자(operator)

산술 연산자

  1. +: 덧셈
  2. -: 뺄셈
  3. *: 곱셈
  4. /: 나눗셈
  5. %: 나머지
-- 산술 연산자 예제

local a = 10
local b = 5

print(a + b) -- 15
print(a - b) -- 5
print(a * b) -- 50
print(a / b) -- 2
print(a % b) -- 0

비교 연산자

  1. ==: 같음
  2. ~=: 다름 (!= 는 작동안함)
  3. <: 작음
  4. >: 큼
  5. <=: 작거나 같음
  6. >=: 크거나 같음
-- 비교 연산자 예제

local a = 10
local b = 5

print(a == b) -- false
print(a ~= b) -- true
print(a < b) -- false
print(a > b) -- true
print(a <= b) -- false
print(a >= b) -- true

논리 연산자

  1. and: 논리곱(AND)
  2. or: 논리합(OR)
  3. not: 논리부정(NOT)
-- 논리 연산자 예제

local a = true
local b = false

print(a and b) -- false
print(a or b) -- true
print(not a) -- false

조건문(if statement)

Lua에서 조건문은 if문을 사용한다. then으로 조건을 확인하고, end로 종료한다.

-- if문 예제

local a = 10
local b = 5

if a > b then
    print("a is greater than b")
end

반복문(loop)

Lua에서 반복문은 while문과 for문을 사용한다. do로 반복문을 시작하고, end로 종료한다.

while문

-- while문 예제

local i = 1

while i <= 5 do
    print(i)

    i = i + 1
end

-- 1
-- 2
-- 3
-- 4
-- 5

for문

-- for문 예제

for i = 1, 5 do
    print(i)
end

-- 1
-- 2
-- 3
-- 4
-- 5

함수(function)

Lua에서 함수는 function을 사용한다. 아주 대단한 점이 클로저를 지원한다!

-- 함수 예제

function add(a, b)
    return a + b
end

모듈(module)

모듈은 require 함수를 사용하여 불러온다.

local M = {}

function M.add(a, b)
    return a + b
end

function M.sub(a, b)
    return a - b
end

return M

모듈을 만들고, 불러온다.

local math = require("module")

print(math.add(10, 5)) -- 15
print(math.sub(10, 5)) -- 5