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
endif/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) -- Guestand/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 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- if, elseif 및 else 문
- while 및 repeat-until 반복문
- 숫자형 for 반복문
- 제네릭 for와 break