반환 값이 없는 함수
Coddy Lua 여정의 Luau 소개 섹션에 포함된 레슨 — 73개 중 24번째.
많은 함수들이 값을 계산하지 않고, 메시지 출력, 테이블 업데이트, 상태 저장과 같이 무언가를 수행합니다. Luau에서는 빈 반환 타입 ()를 사용하여 함수가 nothing을 반환한다고 주석을 달 수 있습니다:
function logMessage(message: string): ()
print(message)
end
local counter = 0
function incrementCounter(): ()
counter += 1
endTypeScript를 경험해 보셨다면, ()가 void의 역할을 한다는 것을 알 수 있습니다. 하지만 Luau 표기법은 말 그대로 "0개의 반환 값"을 의미하는 빈 괄호 쌍입니다.
이 표기는 선택 사항입니다. 생략하면 Luau는 함수가 아무것도 반환하지 않는다고 추론합니다. : ()를 명시적으로 작성하면 의도가 분명해집니다. 시그니처를 읽는 사람은 누구나 이 함수가 결과값을 얻기 위해서가 아니라 Side 효과(부작용)를 위해 호출된다는 점을 알 수 있습니다.
런타임 시에는 (늘 그렇듯) 아무것도 바뀌지 않습니다. return 값이 없는 함수는 결과를 캡처하려고 할 때 일반 Lua와 마찬가지로 단지 nil을 생성합니다.
챌린지
쉬움userName: string을 받고 명시적인 반환 타입 ()를 가지는 displayWelcome이라는 이름의 함수를 만드세요. 이 함수는 "Welcome to our application, [userName]!"를 출력해야 합니다.
errorMessage: string을 받고 반환 타입이 ()인 logError라는 이름의 함수를 만드세요. 이 함수는 "ERROR: [errorMessage]"를 출력해야 합니다.
매개변수를 받지 않고 반환 타입이 ()인 processData라는 이름의 함수를 만드세요. 이 함수는 "Processing data..."를 출력한 후 다음 줄에 "Data processing complete."를 출력해야 합니다.
다음 순서대로 호출하세요:
displayWelcome("Alice")processData()logError("Invalid input detected")displayWelcome("Bob")
직접 해보기
-- 여기에 코드를 작성하세요
-- displayWelcome(userName: string): ()
-- logError(errorMessage: string): ()
-- processData(): ()
-- 그런 다음 호출: displayWelcome("Alice"), processData(),
-- logError("Invalid input detected"), displayWelcome("Bob")
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.