Menu
Coddy logo textTech

일급 값으로서의 함수

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

Lua에서 함수는 단순히 작업을 수행하는 코드 블록 그 이상입니다. 함수는 다른 데이터 타입과 마찬가지로 취급될 수 있는 값입니다. 이는 숫자, 문자열 또는 테이블을 다루는 것과 동일한 방식으로 함수를 다룰 수 있음을 의미합니다.

함수를 변수에 저장할 수 있습니다:

local greet = function()
    print("Hello!")
end

greet()  -- 출력: Hello!

여기서 함수는 greet 변수에 할당되며, 일반적인 함수와 마찬가지로 호출할 수 있습니다. 이는 코드 구조를 설계하는 방식에 있어 강력한 가능성을 열어줍니다.

함수는 다른 함수의 인자로 전달될 수도 있습니다. 이는 한 함수가 다른 함수에 정의된 동작을 사용하도록 하고 싶을 때 특히 유용합니다:

function executeAction(action)
    action()
end

local sayHello = function()
    print("Hello from a function!")
end

executeAction(sayHello)  -- 출력: Hello from a function!

이 예제에서 executeAction은 함수를 매개변수로 받아 이를 호출합니다. sayHello 함수는 숫자나 문자열을 전달하는 것과 똑같이 전달됩니다.

함수는 다른 함수를 반환할 수도 있습니다. 이를 통해 특정 조건이나 매개변수에 따라 함수를 동적으로 생성할 수 있습니다:

function createMultiplier(factor)
    return function(number)
        return number * factor
    end
end

local double = createMultiplier(2)
print(double(5))  -- 출력: 10
challenge icon

챌린지

쉬움

a, b, 그리고 operation을 인자로 받아 두 숫자에 해당 연산 함수를 적용한 결과를 반환하는 applyOperation 함수를 작성하세요.

operation 매개변수는 ab를 인자로 호출될 함수를 포함하는 테이블입니다.

로직:

  • "func" 키를 사용하여 operation 테이블에서 함수를 추출합니다.
  • 해당 함수를 ab를 인자로 하여 호출합니다.
  • 결과를 반환합니다.

매개변수:

  • a (number): 첫 번째 숫자
  • b (number): 두 번째 숫자
  • operation (table): "func" 키에 함수가 저장된 테이블

반환값: ab를 사용하여 연산 함수를 호출한 결과 (number)

치트 시트

Lua에서 함수는 변수에 저장하고, 인자로 전달하며, 다른 함수에서 반환할 수 있는 일급 객체(first-class values)입니다.

함수를 변수에 저장하기:

local greet = function()
    print("Hello!")
end

greet()  -- 출력: Hello!

함수를 인자로 전달하기:

function executeAction(action)
    action()
end

local sayHello = function()
    print("Hello from a function!")
end

executeAction(sayHello)  -- 출력: Hello from a function!

다른 함수에서 함수 반환하기:

function createMultiplier(factor)
    return function(number)
        return number * factor
    end
end

local double = createMultiplier(2)
print(double(5))  -- 출력: 10

직접 해보기

function applyOperation(a, b, operation)
    -- 여기에 코드를 작성하세요
end
quiz icon실력 점검

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

Logic & Flow의 모든 레슨