문법 · Lua · beginner

Lua 제어·반복·함수

if/for/while, ipairs/pairs, local 함수.

배우기 · Lua 문법 · 12분 · 2/7 · lua · 제어 · 함수

이 트랙 목차 (7)
  1. 1. Lua 기초: 변수·테이블·문자열
  2. 2. Lua 제어·반복·함수
  3. 3. 테이블 깊게: 배열부·해시부·ipairs
  4. 4. 문자열·패턴: match, gmatch, gsub
  5. 5. 에러와 pcall: 실패를 값으로
  6. 6. 모듈과 require 감각
  7. 7. 숫자 for와 인덱스 함정

if

if n % 15 == 0 then
  return "FizzBuzz"
elseif n % 3 == 0 then
  return "Fizz"
elseif n % 5 == 0 then
  return "Buzz"
else
  return tostring(n)
end

숫자 for · while

for i = 1, #arr do
  local x = arr[i]
end

local i = 1
while i <= #arr do
  i = i + 1
end

ipairs / pairs

for i, v in ipairs(arr) do  -- 배열 부분
end
for k, v in pairs(map) do   -- 모든 키
end

맵만 있는 테이블에 ipairs를 쓰면 거의 순회하지 않습니다.

함수와 local

local function helper(x)
  return x * 2
end

전역을 오염시키지 않으려면 local을 기본으로 하세요.

테이블을 배열처럼 쓰기

local t = {}
t[#t + 1] = x   -- push
local y = table.remove(t)  -- pop (끝)

스택·큐는 테이블로 흉내 냅니다. 원리 트랙의 스택·큐 레슨과 같이 보세요.

숫자 for 상세

for i = 1, 10, 2 do  -- 1,3,5,7,9
end

세 번째 인자는 스텝.

함수를 값으로

local function apply(f, x)
  return f(x)
end
print(apply(function(n) return n * 2 end, 3))

모듈 감각

문제에서는 보통 한 파일에 solve만 있으면 됩니다.
전역 오염을 줄이려면 헬퍼도 local function으로.

더 깊게

읽은 뒤 연습장에서 예제 코드를 한 번 타이핑해 보세요. 눈으로만 보면 하루 뒤 사라집니다.

관련 원리 카드와 문제 태그로 바로 이어서 풀면, 문법·패턴이 한 묶음으로 남습니다.

막히면 30분 규칙: 입력을 로그로 확인 → 기대/실제 한 줄 비교 → 그래도 안 되면 배우기 레슨으로 잠시 복귀.

관련 짧은 원리

관련 문제