Menu
Coddy logo textTech

콜론 구문

Coddy Lua 여정의 Object Oriented Programming 섹션에 포함된 레슨 — 70개 중 3번째.

매번 counter.increment(counter)를 작성하는 것은 번거롭고 오류가 발생하기 쉽습니다. Lua는 더 깔끔한 방법을 제공합니다: 콜론(:) 연산자입니다.

콜론(:)을 사용하여 함수를 정의하면, 루아(Lua)는 자동으로 self를 첫 번째 매개변수로 추가합니다:

local player = {
    name = "Hero"
}

-- 정의에서 콜론 사용
function player:greet()
    print("Hello, I am " .. self.name)
end

콜론은 함수를 호출할 때도 작동합니다. 이는 자동으로 테이블을 첫 번째 인자로 전달합니다:

player:greet()  -- 출력: Hello, I am Hero

이것은 player.greet(player)라고 작성하는 것과 동일하지만, 훨씬 더 깔끔합니다. 콜론은 정의할 때와 호출할 때 양쪽 모두에서 self 매개변수를 처리합니다.

두 방식 모두 동일한 결과를 생성하는 것을 보여주는 비교 예시입니다:

local counter = { value = 0 }

-- 점(Dot) 구문 (명시적 self)
function counter.increment(self)
    self.value = self.value + 1
end
counter.increment(counter)

-- 콜론(Colon) 구문 (자동 self)
function counter:decrement()
    self.value = self.value - 1
end
counter:decrement()

콜론 구문은 Lua에서 메서드를 정의하고 호출하는 표준 방식입니다. 이것은 코드를 더 짧고 덜 반복적으로 만들어 줍니다.

challenge icon

챌린지

쉬움

입력으로 받을 값으로 초기화된 message 필드를 가진 greeter라는 이름의 테이블을 생성하세요.

콜론 구문(colon syntax)을 사용하여 다음과 같은 형식으로 인사를 출력하는 :sayHello(name) 메서드를 추가하세요:

[message], [name]!

두 개의 입력을 받게 됩니다:

  1. greeter.message에 저장할 인사 메시지
  2. :sayHello() 메서드에 전달할 이름

콜론 구문을 사용하여 메서드를 정의하고, 콜론 구문을 사용하여 호출하세요. 형식에 맞게 인사를 출력하세요.

예를 들어, 메시지가 Welcome이고 이름이 Luna라면, 출력은 다음과 같아야 합니다:

Welcome, Luna!

치트 시트

콜론(:) 연산자는 self 매개변수를 자동으로 처리함으로써 Lua에서 메서드를 정의하고 호출하기 위한 더 깔끔한 구문을 제공합니다.

콜론을 사용하여 함수를 정의할 때, self가 첫 번째 매개변수로 자동으로 추가됩니다:

function player:greet()
    print("Hello, I am " .. self.name)
end

콜론을 사용하여 함수를 호출할 때, 테이블이 첫 번째 인자로 자동으로 전달됩니다:

player:greet()  -- player.greet(player)와 동일

점(dot) 구문과 콜론 구문의 비교:

-- 점 구문 (명시적 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()

콜론 구문은 Lua에서 메서드를 정의하고 호출하는 표준적인 방법이며, 코드를 더 짧고 덜 반복적으로 만들어 줍니다.

직접 해보기

-- 입력 읽기
local message = io.read()
local name = io.read()

-- TODO: 아래에 코드를 작성하세요
-- 1. 'message' 필드를 가진 'greeter'라는 이름의 테이블을 생성하세요
-- 2. 콜론(:) 구문을 사용하여 :sayHello(name) 메서드를 추가하세요
-- 3. 콜론(:) 구문을 사용하여 메서드를 호출하고 인사말을 출력하세요
quiz icon실력 점검

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

Object Oriented Programming의 모든 레슨