익명 함수 타입 지정
Coddy Lua 여정의 Luau 소개 섹션에 포함된 레슨 — 73개 중 23번째.
Lua에서 함수는 값입니다 — 지금까지 변수에 저장하거나 전달해 보았습니다: local f = function(x) return x * 2 end. 이러한 익명 함수(함수 표현식)는 이름이 있는 함수와 정확히 동일한 방식으로 타입 어노테이션을 작성합니다:
local double = function(x: number): number
return x * 2
end
local shout = function(text: string): string
return string.upper(text) .. "!"
end괄호 안에 매개변수 name: type을 작성하고, 닫는 괄호 뒤에 반환 타입을 작성합니다 — 이름이 있는 함수와의 유일한 차이점은 function 키워드 뒤에 이름이 없고 전체 표현식이 변수에 할당된다는 것입니다.
JavaScript나 TypeScript를 접해보셨다면, Luau에는 화살표 함수가 없다는 점에 유의하세요 — => 문법이 존재하지 않습니다. 모든 함수 표현식은 길이에 상관없이 function ... end로 작성됩니다.
할당되고 나면 다른 함수와 마찬가지로 변수를 통해 호출합니다: double(21)은 42를 반환하며, 검사기는 작성한 어노테이션에 맞게 모든 호출을 검증합니다.
챌린지
쉬움이 named 함수를 동일한 타입 어노테이션을 유지하면서 local 변수에 저장되는 익명 함수(anonymous function)로 다시 작성하세요:
function subtract(a: number, b: number): number
return a - b
end즉, 동일한 매개변수 및 반환 타입을 사용하여 local subtract = function(...) ... end 형태로 작성합니다.
그런 다음 타핑된 익명 함수 두 개를 더 생성하세요:
createMessage—text: string을 받고,"Message: [text]"문자열을 반환 (반환 타입string)isPositive—num: number를 받고, 숫자가 0보다 크면true, 그렇지 않으면false를 반환 (반환 타입boolean)
각각을 한 줄씩 호출하여 print 하세요:
subtract(10, 3)createMessage("Hello World")isPositive(-5)isPositive(8)
직접 해보기
-- 여기에 코드를 작성하세요
-- local subtract = function(a: number, b: number): number ... end
-- local createMessage = function(text: string): string ... end
-- local isPositive = function(num: number): boolean ... end
-- 그런 다음 네 결과를 출력하세요
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.