Menu
Coddy logo textTech

익명 함수

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을 직접 생성합니다. 이렇게 하면 코드가 더 간결해지고 정렬 로직을 사용하는 바로 그 위치에 유지할 수 있습니다.

challenge icon

챌린지

쉬움

numbersthreshold를 받아 threshold보다 큰 숫자만 포함하는 새 table을 반환하는 함수 filterByThreshold를 Write하세요.

숫자를 필터링하려면 익명 함수 방식을 사용하여 table.insert()를 사용하세요. 별도의 이름이 지정된 함수를 정의하지 말고 필터링 로직을 인라인으로 작성하세요.

로직:

  • 빈 result table을 생성합니다
  • numbers table을 순회합니다
  • 각 숫자에 대해 익명 함수를 사용하여 threshold를 초과하는지 확인합니다
  • 확인 결과가 true이면 해당 숫자를 result table에 추가합니다
  • 필터링된 result table을 반환합니다

매개변수:

  • numbers (table): 숫자 값을 포함하는 목록 형식의 table
  • threshold (number): 필터링에 사용되는 최소값(미만이 아닌 초과 기준)

반환값: threshold보다 큰 숫자만 포함하는 table (table)

직접 해보기

function filterByThreshold(numbers, threshold)
    -- 여기에 코드를 작성하세요
end
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

로직 및 흐름 제어 (Logic & Flow)의 모든 레슨

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