메서드
Coddy GDScript 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨. 65개 중 5번째.
클래스 안에 선언된 함수는 메서드입니다. 클래스의 객체가 할 수 있는 일이죠. 다른 함수와 마찬가지로 메서드는 매개변수를 받고 값을 반환할 수 있으며, 객체의 변수를 읽고 변경할 수 있습니다:
# score_board.gd
class_name ScoreBoard
extends RefCounted
var points: int = 0
func greet() -> void:
print("Scoreboard ready")
func add(amount: int) -> void:
points += amount
func doubled() -> int:
return points * 2
func add_bonus() -> int:
add(10)
return points점 표기법으로 객체의 메서드를 호출하고 괄호 안에 인수를 전달하세요:
var board := ScoreBoard.new()
board.greet() # 점수판 준비 완료
board.add(5)
print(board.doubled()) # 10
print(board.add_bonus()) # 15클래스 내부에서 메서드는 이름을 사용해 같은 객체의 다른 메서드를 호출합니다. add_bonus() 안의 add(10)은 self.add(10)을 의미합니다.
-> void로 선언된 메서드는 아무것도 반환하지 않으며, -> int로 선언된 메서드는 int를 반환해야 합니다. 각 호출은 자체 객체에서 작동합니다. board.add(5)는 board.points를 변경하며 다른 점수판은 변경하지 않습니다.
호출은 선언과 일치해야 합니다. 인수 없이 board.add()를 호출하면 프로그램이 실행되기 전에 오류가 보고됩니다.
챌린지
쉬움bank_account.gd 파일에 있는 BankAccount 클래스의 메서드를 완성하세요. 계정은 balance 변수에 금액을 저장하며, 이 변수는 0에서 시작합니다.
deposit(amount)는 잔액에amount를 더합니다withdraw(amount)는amount를 빼고true를 반환합니다.amount가 잔액보다 크면 아무것도 변경하지 않고false를 반환합니다get_balance()는 잔액을 반환합니다
제공된 코드는 이어지는 명령의 개수를 읽은 다음, 한 줄에 하나씩 명령을 읽습니다: deposit AMOUNT 또는 withdraw AMOUNT. 각 명령에 대한 한 줄과 최종 잔액을 출력합니다. deposit 50과 withdraw 80을 입력하면 다음을 출력합니다:
Deposited 50
Not enough money for 80
Current balance: $50코드는 bank_account.gd에 작성하세요. main.gd에는 제공된 입력/출력 코드가 있으며 수정할 수 없습니다.
직접 해보기
extends Node
func _ready():
# 제공된 입출력 코드: 그대로 유지하세요
var account := BankAccount.new()
var count := int(OS.read_string_from_stdin())
for i in count:
var parts := OS.read_string_from_stdin().split(" ")
var amount := int(parts[1])
if parts[0] == "deposit":
account.deposit(amount)
print("Deposited %d" % amount)
elif account.withdraw(amount):
print("Withdrew %d" % amount)
else:
print("Not enough money for %d" % amount)
print("Current balance: $%d" % account.get_balance())
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
객체 지향 프로그래밍의 모든 레슨
직접 연습해 보세요: 온라인 GDScript 컴파일러