0Pricing
Lua Academy · 강의

if, elseif 및 else 문

Lua의 if/elseif/else 구문으로 조건 분기 로직을 작성합니다.

if, elseif 및 else 문은(는) CoddyKit의 무료 Lua Academy 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Lua Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Lua Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

기본 if 문

if 문은 조건을 평가하고 조건이 참 같은 값일 때 해당 블록을 실행합니다. Lua에서는 false와 nil만 거짓 같은 값이며, 0과 ""을 포함한 나머지는 모두 참 같은 값입니다. 블록은 end로 끝냅니다.

local score = 85

if score >= 90 then
  print("A grade")
end

if score >= 60 then
  print("Passing")   -- prints
end

if 0 then
  print("0 is truthy!")  -- prints in Lua
end

if/elseif/else

elseif로 여러 조건을 연결하고 else로 대체 분기를 제공할 수 있습니다. Lua는 조건을 위에서 아래로 평가하며, 처음으로 일치하는 분기 하나만 실행합니다. 다른 언어의 switch/case와 달리 Lua의 elseif는 두 단어가 아니라 하나의 키워드입니다.

local score = 75

if score >= 90 then
  print("A")
elseif score >= 80 then
  print("B")
elseif score >= 70 then
  print("C")   -- prints
elseif score >= 60 then
  print("D")
else
  print("F")
end

조건에서의 논리 연산자

Lua는 and, or, not을 논리 연산자로 사용합니다. 이 연산자들은 단락 평가를 수행합니다. and는 첫 번째 거짓 같은 값 또는 마지막 값을 반환하고, or는 첫 번째 참 같은 값 또는 마지막 값을 반환합니다. 이를 통해 관용적인 기본값 패턴을 사용할 수 있습니다.

local age = 25
local hasID = true

if age >= 18 and hasID then
  print("Entry allowed")
end

-- or for defaults
local name = nil
local display = name or "Guest"
print(display)   -- Guest

and/or를 사용한 삼항 연산 관용구

Lua에는 삼항 연산자가 없지만 and/or 패턴으로 비슷하게 구현할 수 있습니다: condition and trueVal or falseVal. trueVal이 false나 nil이 아닐 때 작동합니다. 더 안전한 삼항 논리가 필요하면 인라인 if 함수를 사용하십시오.

local x = 10
local label = (x > 5) and "big" or "small"
print(label)   -- big

-- Safe ternary function
local function ternary(cond, t, f)
  if cond then return t else return f end
end
print(ternary(false, "yes", "no"))  -- no

중첩된 if 문

다른 분기 안에 if 문을 중첩할 수 있습니다. 중첩된 각 블록에는 자체 end가 필요합니다. 중첩이 깊어지는 경우 조기 반환이나 보호 절을 사용해 논리를 평평하게 만들 기회일 수 있습니다.

local loggedIn = true
local isAdmin = false

if loggedIn then
  if isAdmin then
    print("Admin dashboard")
  else
    print("User dashboard")  -- prints
  end
else
  print("Login required")
end

보호 절

보호 절은 함수의 앞부분에서 잘못된 경우나 예외적인 경우를 처리하는 조기 반환으로, 중첩을 줄여 줍니다. 이 패턴을 사용하면 정상 경로의 코드가 들여쓰기되지 않아 더 읽기 쉬워집니다.

local function processAge(age)
  if type(age) ~= "number" then
    return nil, "age must be a number"
  end
  if age < 0 then
    return nil, "age cannot be negative"
  end
  -- happy path
  return math.floor(age)
end

print(processAge(25.7))   -- 25
print(processAge(-1))     -- nil  age cannot be negative

값 비교

Lua의 비교 연산자는 ==(같음), ~=(같지 않음), <, >, <=, >=입니다. 참고로 ~=가 Lua에서 "같지 않음"을 뜻하며 !=가 아닙니다. 문자열 비교에는 사전식 순서가 사용됩니다. 문자열과 숫자를 직접 비교할 수는 없습니다.

print(1 == 1)      -- true
print(1 ~= 2)      -- true
print("abc" < "abd")  -- true (lexicographic)
print("10" == 10)  -- false (different types)

-- Safe nil check
local val = nil
if val == nil then
  print("no value")
end

문자열 동등성

Lua에서 두 문자열은 바이트 내용과 길이가 모두 같을 때에만 서로 같습니다. Lua는 문자열을 내부화하므로 같은 문자열은 동일한 메모리를 가리키는 경우가 많아 ==가 빠른 포인터 비교가 될 수 있습니다. 문자열을 is나 참조 동등성으로 비교하지 마십시오. ==는 항상 값을 기준으로 비교합니다.

local s1 = "hello"
local s2 = "hel" .. "lo"

print(s1 == s2)     -- true (same content)
print(s1 == "Hello") -- false (case sensitive)

-- Check for empty string
local name = ""
if name == "" or name == nil then
  print("name is empty or nil")
end

테이블과 함수 비교

테이블과 함수는 내용이 아니라 참조를 기준으로 비교됩니다. 내용이 동일한 서로 다른 테이블 리터럴은 같은 객체가 아닌 한 같지 않습니다. 테이블에 사용자 지정 동등성을 정의하려면 __eq와 같은 메타메서드를 사용하십시오.

local t1 = {1, 2, 3}
local t2 = {1, 2, 3}
local t3 = t1

print(t1 == t2)   -- false (different objects)
print(t1 == t3)   -- true (same reference)

local f1 = function() end
local f2 = function() end
print(f1 == f2)   -- false

관용적인 패턴

조건문에서 사용하는 일반적인 Lua 관용구는 다음과 같습니다. 사전 조건을 검증할 때 assert()를 사용하고, 간단한 기본값에는 and/or 트릭을 사용하며, 어떤 값이든 불리언으로 변환하기 위해 이중 부정(not not x)을 사용하는 것은 피하십시오.

-- assert pattern
local function sqrt(n)
  assert(n >= 0, "sqrt of negative")
  return math.sqrt(n)
end

-- Convert to boolean
local val = 42
local boolVal = not not val
print(boolVal)   -- true

-- Default parameter
local function greet(name)
  name = name or "World"
  print("Hello, " .. name)
end
greet()          -- Hello, World

빠른 확인

Lua에서 거짓 같은 값은 무엇입니까?

복습: 조건문

요약:

  • if ... elseif ... else ... end는 전체 분기 형식입니다
  • nil과 false만 거짓 같은 값입니다
  • and/or는 단락 평가를 수행하고 피연산자 값을 반환합니다
  • ~=는 Lua에서 "같지 않음"을 뜻합니다(!=가 아님)
  • 테이블과 함수는 참조를 기준으로, 문자열은 값을 기준으로 비교됩니다
  • 중첩을 줄이려면 보호 절을 사용하십시오

자주 묻는 질문

“if, elseif 및 else 문” 강의는 무료인가요?

네 — “if, elseif 및 else 문” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Lua Academy 강의 전체를 잠금 해제할 수 있습니다. Lua Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“if, elseif 및 else 문”에서 뭘 배우나요?

Lua의 if/elseif/else 구문으로 조건 분기 로직을 작성합니다. 브라우저에서 직접 실행하는 실습 코드로 Lua Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Lua Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Lua Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.

“if, elseif 및 else 문” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Lua Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Lua Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. if, elseif 및 else 문
  2. while 및 repeat-until 반복문
  3. 숫자형 for 반복문
  4. 제네릭 for와 break
← Lua Academy(으)로 돌아가기