학습
Lua 함수 정의 및 호출
Lua 함수 정의 및 호출 — 초급
함수 정의 및 호출
1. 도입 (왜 배워야 하는가)
프로그래밍에서 함수는 코드의 재사용성을 높이고, 프로그램을 구조적으로 만들기 위해 매우 중요한 개념입니다. 함수는 특정 작업을 수행하는 코드 블록으로, 이를 활용하면 코드의 중복을 줄이고, 가독성을 향상시킬 수 있습니다. 실무에서 함수 없이 작업을 진행한다면, 같은 코드를 여러 번 반복 작성해야 하며, 이는 버그를 발생시키기 쉽고 유지보수를 어렵게 만듭니다. 따라서 함수의 정의와 호출 방법을 이해하는 것은 효율적인 프로그래밍을 위해 필수적입니다.
2. 핵심 개념 설명
- 함수(Function): 특정 작업을 수행하는 독립적인 코드 블록입니다. 예를 들어, 요리를 하는 레시피와 같습니다. 요리법(함수)을 알고 있다면 언제든지 같은 요리를 쉽게 만들 수 있습니다.
- 함수 호출(Function Call): 정의된 함수를 실제로 실행하는 과정입니다. 이는 마치 요리를 하기 위해 레시피를 따라하는 것과 유사합니다.
관련 용어 정리
| 용어 | 설명 |
|---|---|
| 매개변수 | 함수에 전달되는 입력 값 |
| 반환값 | 함수가 수행한 결과를 반환하는 값 |
| 스코프 | 변수의 유효 범위 |
3. 기본 코드 예제
다음은 가장 기본적인 함수 정의와 호출 예제입니다.
-- 두 숫자의 합을 계산하는 함수 정의
function add(a, b)
return a + b -- a와 b를 더한 값을 반환
end
-- 함수 호출
local result = add(5, 3) -- add 함수를 호출하고 결과를 result에 저장
print(result) -- 결과를 출력
실행 결과
8
코드 한 줄씩 동작 설명
function add(a, b)-add라는 이름의 함수를 정의하고, 두 개의 매개변수a와b를 설정합니다.return a + b-a와b를 더한 후 그 값을 반환합니다.local result = add(5, 3)-add함수를 호출하여 5와 3을 인자로 전달하고, 반환된 값을result변수에 저장합니다.print(result)-result변수를 출력하여 최종 결과(8)를 보여줍니다.- 함수는 코드의 재사용성을 높이며, 프로그래밍을 구조적으로 만듭니다.
- 함수는 매개변수를 받아 특정 작업을 수행하고, 결과를 반환합니다.
- 함수 호출을 통해 정의된 작업을 실행할 수 있습니다.
- 실무에서 자주 사용하는 패턴으로 장바구니 금액 계산, 사용자 인사 등이 있습니다.
- 변수와 데이터 타입
- 조건문과 반복문
- 테이블과 데이터 구조
4. 실전 활용 예제
예제 1: 쇼핑몰에서 장바구니 금액 계산
쇼핑몰에서 장바구니에 담긴 상품의 총 금액을 계산하는 함수를 정의할 수 있습니다.
function calculateTotal(prices)
local total = 0 -- 총 금액 초기화
for _, price in ipairs(prices) do
total = total + price -- 각 가격을 더함
end
return total
end
local cart = {19.99, 5.49, 3.99} -- 장바구니의 가격 목록
local totalPrice = calculateTotal(cart) -- 총 금액 계산
print("장바구니 총 금액: " .. totalPrice) -- 결과 출력
예제 2: 사용자 이름 인사 함수
사용자의 이름을 받아 인사하는 함수입니다.
function greet(name)
return "안녕하세요, " .. name .. "님!" -- 인사 메시지 생성
end
print(greet("홍길동")) -- 사용자 이름으로 인사
5. 흔한 실수와 주의사항
실수 1: 매개변수 부족
잘못된 코드
function multiply(a, b)
return a * b
end
print(multiply(5)) -- 두 번째 인자를 생략
오류: 두 개의 매개변수가 필요하다고 경고가 발생합니다.
올바른 코드
print(multiply(5, 2)) -- 올바르게 두 인자를 제공
실수 2: 반환값을 무시하기
잘못된 코드
function subtract(a, b)
return a - b
end
subtract(10, 5) -- 반환값을 저장하지 않음
문제: 결과를 사용할 수 없습니다.
올바른 코드
local difference = subtract(10, 5)
print(difference) -- 결과를 출력