Menu
CoddyTech

선택적 매개변수

Coddy Lua 여정의 Luau 소개 섹션에 포함된 레슨. 80개 중 26번째.

일반 Lua에서는 항상 인수를 생략할 수 있었습니다. 빠진 인수는 조용히 nil이 되었고, 이를 처리하는 것을 잊는 것은 흔한 버그 원인이었습니다. Luau에서는 이 가능성을 명시적으로 표현합니다. 매개변수의 타입에 ?를 추가해 선택 사항임을 표시하세요.

function greet(name: string, title: string?): string
    if title then
        return `{title} {name}`
    end
    return `Hello, {name}`
end

print(greet("Ada"))          -- 안녕하세요, Ada
print(greet("Ada", "Dr."))   -- Dr. Ada

string?는 "string 또는 nil"로 읽습니다. 호출하는 쪽에서는 문자열을 전달하거나 인수를 아예 생략할 수 있습니다. ?가 없는 매개변수는 필수이며, 검사기는 이를 생략한 호출에 오류를 표시합니다.

함수 안에서 선택적 매개변수는 nil일 수 있으므로 사용하기 전에 확인해야 합니다. if title then ... end가 일반적인 패턴입니다. 확인을 생략하고 nil을 문자열에 연결하면 Lua에서 늘 발생하던 것과 같은 런타임 오류가 발생합니다. 타입 검사기는 먼저 경고해 줍니다.

challenge icon

챌린지

쉬움

표시 이름이 선택 사항인 프로필 함수를 작성하세요.

  1. local function createUserProfile(username: string, displayName: string?): string을 작성하세요.
  2. displayName이 주어지면 `Profile: {displayName} (@{username})`을 반환하고, 그렇지 않으면 `Profile: @{username}`을 반환하세요.
  3. createUserProfile("john_doe", "John Doe")와 createUserProfile("jane_smith")를 출력하세요.

Run Code를 누르세요. 출력에 Profile: John Doe (@john_doe)와 Profile: @jane_smith이 표시됩니다.

직접 해보기

-- 1) createUserProfile(username: string, displayName: string?): string
-- 2) 표시 이름이 있을 때와 없을 때 각각 출력하기

Luau 소개의 모든 레슨

직접 연습해 보세요: 온라인 Luau 컴파일러