익명 함수
Coddy Lua 여정의 로직 및 흐름 제어 (Logic & Flow) 섹션에 포함된 레슨. 54개 중 13번째.
이제 function을 변수에 저장하고 전달할 수 있다는 것을 이해했으므로, function을 작성하는 더욱 간결한 방법을 알아보겠습니다. 항상 function에 이름을 지정하는 대신, 필요한 곳에서 바로 만들 수 있습니다. 이러한 function을 익명 function이라고 합니다.
익명 함수는 단순히 이름이 없는 함수입니다. function 키워드 바로 뒤에 매개변수와 본문을 작성하여 정의합니다.
function(a, b)
return a + b
end이렇게 하면 즉시 사용할 수 있는 function 값이 생성됩니다. 익명 함수는 다른 함수에 인수로 함수를 전달할 때 특히 유용합니다. 앞에서 살펴본 사용자 지정 정렬 예제를 기억하시나요? 익명 함수를 사용하면 다음과 같이 작성할 수 있습니다.
local players = {
{name = "Alice", score = 150},
{name = "Bob", score = 200},
{name = "Charlie", score = 175}
}
table.sort(players, function(a, b)
return a.score > b.score
end)비교를 위한 별도의 이름 있는 function을 정의하는 대신, table.sort()의 두 번째 인수로 function을 직접 생성합니다. 이렇게 하면 코드가 더 간결해지고 정렬 로직을 사용하는 바로 그 위치에 유지할 수 있습니다.
챌린지
쉬움numbers와 threshold를 받아 threshold보다 큰 숫자만 포함하는 새 table을 반환하는 함수 filterByThreshold를 Write하세요.
숫자를 필터링하려면 익명 함수 방식을 사용하여 table.insert()를 사용하세요. 별도의 이름이 지정된 함수를 정의하지 말고 필터링 로직을 인라인으로 작성하세요.
로직:
- 빈 result table을 생성합니다
- numbers table을 순회합니다
- 각 숫자에 대해 익명 함수를 사용하여 threshold를 초과하는지 확인합니다
- 확인 결과가 true이면 해당 숫자를 result table에 추가합니다
- 필터링된 result table을 반환합니다
매개변수:
numbers(table): 숫자 값을 포함하는 목록 형식의 tablethreshold(number): 필터링에 사용되는 최소값(미만이 아닌 초과 기준)
반환값: threshold보다 큰 숫자만 포함하는 table (table)
직접 해보기
function filterByThreshold(numbers, threshold)
-- 여기에 코드를 작성하세요
end
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
로직 및 흐름 제어 (Logic & Flow)의 모든 레슨
직접 연습해 보세요: 온라인 Lua 컴파일러