함수를 포함한 테이블
Coddy Lua 여정의 Object Oriented Programming 섹션에 포함된 레슨 — 70개 중 1번째.
Lua에서 테이블은 매우 다재다능합니다. 데이터를 저장하는 것 외에도 함수를 포함할 수 있습니다. 이를 통해 관련된 연산들을 함께 그룹화하여 코드를 체계적이고 관리하기 쉽게 유지할 수 있습니다.
테이블 안에 함수를 넣으려면, 다른 값과 마찬가지로 키에 할당하기만 하면 됩니다:
local myTable = {
greet = function(name)
return "Hello, " .. name
end
}
print(myTable.greet("Alice")) -- 출력: Hello, Alice함수를 별도로 정의한 다음 테이블에 추가할 수도 있습니다:
local myTable = {}
myTable.greet = function(name)
return "Hello, " .. name
end또는 다음과 같이 더 깔끔한 단축 구문을 사용하세요:
local myTable = {}
function myTable.greet(name)
return "Hello, " .. name
end세 가지 접근 방식 모두 동일한 결과를 생성합니다. 점 표기법(dot notation)을 사용하여 함수를 호출합니다: myTable.greet("Alice"). 데이터와 함수를 묶는 이 패턴은 Lua에서 객체 지향 프로그래밍의 기초입니다.
챌린지
쉬움네 가지 산술 함수를 포함하는 calculator라는 이름의 테이블을 생성하세요:
add(a, b)-a와b의 합을 반환합니다.subtract(a, b)-a에서b를 뺀 값을 반환합니다.multiply(a, b)-a와b의 곱을 반환합니다.divide(a, b)-a를b로 나눈 값을 반환합니다.
세 개의 입력을 받게 됩니다:
- 연산 이름 (
add,subtract,multiply,divide중 하나) - 첫 번째 숫자
- 두 번째 숫자
연산 이름을 기반으로 calculator 테이블에서 적절한 함수를 호출하고 그 결과를 출력하세요.
치트 시트
Lua에서 테이블은 데이터와 함께 함수를 저장할 수 있습니다. 테이블에 함수를 추가하려면 키에 함수를 할당하세요:
local myTable = {
greet = function(name)
return "Hello, " .. name
end
}
print(myTable.greet("Alice")) -- 출력: Hello, Alice함수를 별도로 정의하고 테이블에 추가할 수도 있습니다:
local myTable = {}
myTable.greet = function(name)
return "Hello, " .. name
end또는 단축 구문을 사용할 수 있습니다:
local myTable = {}
function myTable.greet(name)
return "Hello, " .. name
end점 표기법을 사용하여 테이블 함수를 호출합니다: myTable.greet("Alice")
직접 해보기
-- 입력 읽기
local operation = io.read()
local num1 = tonumber(io.read())
local num2 = tonumber(io.read())
-- TODO: 네 가지 함수를 가진 calculator 테이블 생성:
-- add(a, b), subtract(a, b), multiply(a, b), divide(a, b)
-- TODO: 연산 이름을 사용하여 calculator 테이블에서 적절한 함수 호출
-- 그리고 결과 출력이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.