익명 함수 타입 지정
Coddy Lua 여정의 Luau 소개 섹션에 포함된 레슨. 73개 중 23번째.
Lua에서 함수는 값입니다. 함수를 변수에 저장하고 여기저기로 전달해 왔습니다: local f = function(x) return x * 2 end. 이러한 익명 함수(function 표현식)는 named function과 정확히 같은 방식으로 타입 주석을 사용합니다:
local double = function(x: number): number
return x * 2
end
local shout = function(text: string): string
return string.upper(text) .. "!"
end매개변수는 괄호 안에 name: type 형식으로 작성하고, 반환 타입은 닫는 괄호 뒤에 작성합니다. named function과의 유일한 차이점은 function 키워드에 이름이 없고 전체 표현식이 변수에 할당된다는 것입니다.
JavaScript나 TypeScript를 본 적이 있다면, Luau에는 화살표 함수가 없다는 점에 유의하세요. => 구문은 없습니다. 모든 function 표현식은 길든 짧든 function ... end로 작성합니다.
할당한 후에는 다른 함수와 마찬가지로 변수를 통해 호출합니다. double(21)은 42를 반환하며, checker는 각 호출을 여러분이 작성한 주석과 대조해 검증합니다.
챌린지
쉬움이 이름이 지정된 함수를 모든 타입 주석을 유지하면서 지역 변수에 저장된 익명 함수로 다시 작성하세요:
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).
다음 항목을 각각 한 줄에 하나씩 호출하고 출력하세요:
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
-- 그런 다음 네 개의 결과를 출력하세요
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
Luau 소개의 모든 레슨
직접 연습해 보세요: 온라인 Lua 컴파일러