콜론 구문
Coddy Lua 여정의 객체 지향 프로그래밍 (Object Oriented Programming) 섹션에 포함된 레슨. 70개 중 3번째.
매번 counter.increment(counter)를 작성하는 것은 번거롭고 오류가 발생하기 쉽습니다. Lua는 더 깔끔한 방법인 콜론(:) 연산자를 제공합니다.
콜론을 사용하여 function을 정의하면 Lua가 자동으로 self를 첫 번째 매개변수로 추가합니다:
local player = {
name = "Hero"
}
-- 정의에서 콜론 사용
function player:greet()
print("Hello, I am " .. self.name)
end콜론은 function을 호출할 때에도 작동합니다. table을 첫 번째 인수로 자동 전달합니다:
player:greet() -- 출력: Hello, I am Hero이는 player.greet(player)을 작성하는 것과 Equivalent하지만 훨씬 더 깔끔합니다. 콜론은 definition과 call 중 양쪽 모두에서 self parameter를 처리합니다.
다음은 두 접근 방식이 동일한 결과를 내는 모습을 비교한 것입니다:
local counter = { value = 0 }
-- 점 구문 (명시적 self)
function counter.increment(self)
self.value = self.value + 1
end
counter.increment(counter)
-- 콜론 구문 (자동 self)
function counter:decrement()
self.value = self.value - 1
end
counter:decrement()colon syntax은 Lua에서 method를 정의하고 call하는 표준 방식입니다. 이를 사용하면 code가 더 짧아지고 반복이 줄어듭니다.
챌린지
쉬움greeter라는 이름의 table을 field message와 함께 Create하고, 입력으로 받게 될 값으로 초기화하세요.
colon syntax을 using하여 인사말을 다음 형식으로 출력하는 :sayHello(name) method를 Add하세요:
[message], [name]!두 개의 입력을 받습니다:
greeter.message에 저장할 인사말 메시지:sayHello()method에 전달할 이름
colon syntax을 using하여 method를 정의하고 colon syntax을 using하여 호출하세요. 형식이 지정된 인사말을 출력하세요.
예를 들어 메시지가 Welcome이고 이름이 Luna인 경우, 출력은 다음과 같아야 합니다:
Welcome, Luna!직접 해보기
-- 입력 읽기
local message = io.read()
local name = io.read()
-- TODO: 아래에 코드를 작성하세요
-- 1. 'greeter'라는 이름의 테이블을 만들고 'message' 필드를 추가하세요
-- 2. 콜론 구문을 사용하여 :sayHello(name) 메서드를 추가하세요
-- 3. 콜론 구문을 사용하여 메서드를 호출해 인사말을 출력하세요이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
객체 지향 프로그래밍 (Object Oriented Programming)의 모든 레슨
직접 연습해 보세요: 온라인 Lua 컴파일러