기본 매개변수 값
Coddy Lua 여정의 Luau 소개 섹션에 포함된 레슨 — 73개 중 26번째.
옵션 매개변수는 처리해야 할 nil을 남겨둡니다. 보통 당신이 정말로 원하는 것은 기본값(fallback value)입니다 — "호출자가 지정하지 않았다면, X로 간주하라". Luau 시그니처에는 기본값 문법이 없습니다 (greeting: string = "Hello"와 같은 구문이 없음); 대신 타입 지정과 함께 클래식 Lua idiom을 사용합니다:
function greet(name: string, greeting: string?): string
greeting = greeting or "Hello"
return `{greeting}, {name}`
end
print(greet("Alice")) -- 안녕, 앨리스
print(greet("Alice", "Howdy")) -- 안녕, 앨리스매개변수는 옵션으로 어노테이션되고 (string?), 본문의 첫 번째 줄은 nil을 기본값으로 대체합니다. nil이 거짓(falsy)이기 때문에 이 작업이 동작합니다 — nil or "Hello"는 "Hello"로 평가됩니다. 이 줄 이후에 체커는 greeting이 더 이상 nil이 될 수 없음을 알게 됩니다.
Lua에서 알고 있는 한 가지 주의사항: or는 false도 대체합니다! boolean? 매개변수의 경우, flag = flag or true는 explicit false를 암묵적으로 덮어씁니다. 대신 explicit nil-check를 사용하세요:
function ship(weight: number, expedited: boolean?): number
if expedited == nil then
expedited = false
end
-- ...
end챌린지
쉬움price: number(필수)와 기본값이 0.05인 rate: number?를 받는 calculateTax라는 이름의 함수를 만드세요. 세금 금액(price * rate)을 number로 반환하세요.
name: string(필수)와 기본값이 "Hello"인 timeOfDay: string?를 받는 formatGreeting이라는 이름의 함수를 만드세요. "[timeOfDay], [name]!" 형태의 string으로 반환하세요.
weight: number, distance: number(둘 다 필수) 및 기본값이 false인 expedited: boolean?를 받는 calculateShipping이라는 이름의 함수를 만드세요 — 이 함수에는 명시적인 nil 검사를 사용하세요! (weight * 0.5) + (distance * 0.1)를 계산하고, expedited가 참이면 결과에 2를 곱하세요. number를 반환하세요.
각각 한 줄씩 호출하고 출력하세요:
calculateTax(100)calculateTax(200, 0.08)formatGreeting("Alice")formatGreeting("Bob", "Good morning")calculateShipping(5, 100)calculateShipping(3, 50, true)
직접 해보기
-- 여기에 코드를 작성하세요
-- calculateTax(price: number, rate: number?) -- 기본 rate 0.05
-- formatGreeting(name: string, timeOfDay: string?) -- 기본 "Hello"
-- calculateShipping(weight, distance, expedited: boolean?) -- 기본 false
-- 그런 다음 여섯 개의 결과를 출력하세요
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.