Menu
Coddy logo textTech

익명 함수

Coddy Lua 여정의 Logic & Flow 섹션에 포함된 레슨 — 54개 중 13번째.

이제 함수가 변수에 저장되고 전달될 수 있다는 점을 이해하셨으므로, 함수를 작성하는 훨씬 더 간결한 방법이 있습니다. 항상 함수에 이름을 부여하는 대신, 필요한 곳에서 직접 함수를 생성할 수 있습니다. 이를 익명 함수(anonymous functions)라고 합니다.

익명 함수는 단순히 이름이 없는 함수입니다. function 키워드 뒤에 즉시 매개변수와 본문이 이어지는 형식을 사용하여 정의합니다:

function(a, b)
    return a + b
end

이것은 즉시 사용할 수 있는 함수 값을 생성합니다. 익명 함수는 함수를 다른 함수의 인자로 전달할 때 특히 유용합니다. 이전에 보았던 사용자 정의 정렬 예제를 기억하시나요? 익명 함수를 사용하면 다음과 같은 모습이 됩니다:

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)

비교를 위해 별도의 명명된 함수를 정의하는 대신, 함수가 table.sort()의 두 번째 인자로 직접 생성됩니다. 이렇게 하면 코드가 더 간결해지고 정렬 로직을 사용하는 위치에 바로 유지할 수 있습니다.

challenge icon

챌린지

쉬움

numbersthreshold를 인자로 받아 임계값(threshold)보다 큰 숫자들만 포함하는 새로운 테이블을 반환하는 filterByThreshold 함수를 작성하세요.

숫자를 필터링하기 위해 익명 함수 방식을 사용하여 table.insert()를 활용하세요. 별도의 명명된 함수를 정의하지 않고 인라인으로 필터링 로직을 만드세요.

로직:

  • 비어 있는 결과 테이블을 생성합니다.
  • numbers 테이블을 반복하여 탐색합니다.
  • 각 숫자에 대해 익명 함수를 사용하여 임계값을 초과하는지 확인합니다.
  • 확인 결과가 true이면 숫자를 결과 테이블에 추가합니다.
  • 필터링된 결과 테이블을 반환합니다.

매개변수:

  • numbers (table): 숫자 값을 포함하는 리스트 스타일의 테이블
  • threshold (number): 필터링을 위한 최소값 (해당 값 미포함)

반환값: 임계값보다 큰 숫자들만 포함하는 테이블 (table)

치트 시트

익명 함수(anonymous function)는 이름이 없는 함수로, function 키워드 뒤에 매개변수와 본문을 정의하여 사용합니다:

function(a, b)
    return a + b
end

익명 함수는 함수를 인자로 전달할 때 유용하며, 로직이 사용되는 곳에 인라인으로 유지할 수 있게 해줍니다:

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)

이렇게 하면 비교 함수를 table.sort()의 인자로 직접 생성하여 코드를 더 간결하게 만들 수 있습니다.

직접 해보기

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

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

Logic & Flow의 모든 레슨