일급 값으로서의 함수
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챌린지
쉬움a, b, 그리고 operation을 인자로 받아 두 숫자에 해당 연산 함수를 적용한 결과를 반환하는 applyOperation 함수를 작성하세요.
operation 매개변수는 a와 b를 인자로 호출될 함수를 포함하는 테이블입니다.
로직:
"func"키를 사용하여operation테이블에서 함수를 추출합니다.- 해당 함수를
a와b를 인자로 하여 호출합니다. - 결과를 반환합니다.
매개변수:
a(number): 첫 번째 숫자b(number): 두 번째 숫자operation(table):"func"키에 함수가 저장된 테이블
반환값: a와 b를 사용하여 연산 함수를 호출한 결과 (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
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.