_to_string 메서드
Coddy GDScript 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨. 65개 중 32번째.
클래스에 _to_string()이 정의되어 있지 않은 객체를 출력하면 클래스와 내부 ID만 표시되며, 이 ID는 실행할 때마다 달라집니다: <RefCounted#-9223372009541466673>. _to_string()을 정의하고 대신 표시할 텍스트를 반환하세요:
# card.gd
class_name Card
extends RefCounted
var rank: String
var suit: String
func _init(new_rank: String, new_suit: String) -> void:
rank = new_rank
suit = new_suit
func _to_string() -> String:
return rank + " of " + suitGodot은 객체가 텍스트로 변환될 때마다 이 메서드를 호출합니다. print(), str(), 형식 문자열의 %s를 사용할 때, 그리고 출력된 Array나 Dictionary 안의 각 객체에 대해 호출합니다:
var card := Card.new("Queen", "hearts")
print(card) # 하트 퀸
print(str(card)) # 하트 퀸
print("You drew %s" % card) # 하트 퀸을 뽑았습니다
print([card, Card.new("7", "clubs")]) # [하트 퀸, 클럽 7]"You drew " + card는 여전히 오류입니다. +는 두 문자열을 연결하는데 card는 객체이기 때문입니다. 먼저 변환하세요: "You drew " + str(card).
하위 클래스는 _to_string()을 재정의하고 super()를 사용해 부모 클래스의 텍스트를 사용할 수 있습니다:
# wild_card.gd
class_name WildCard
extends Card
func _to_string() -> String:
return "Wild " + super()print(WildCard.new("King", "spades"))는 Wild King of spades를 출력합니다.
_to_string()은 텍스트를 반환하며, 그 자체로는 아무것도 출력하지 않습니다. 객체를 사용하는 코드에서 텍스트를 출력할지, 더 긴 줄에 이어 붙일지, 아니면 저장할지 결정합니다.
챌린지
쉬움두 클래스에 _to_string() 메서드를 만드세요.
playing_card.gd의PlayingCard에는2부터14까지의rank와suit가 있습니다. 텍스트는 rank,of, suit 순서이며, 예를 들면7 of clubs입니다.11,12,13,14rank는 각각J,Q,K,A로 표기합니다. 예:Q of hearts.hand.gd의Hand는 카드를_cards에 보관합니다. 텍스트는Hand (N):뒤에 카드 텍스트를,로 이어 붙인 것이며, 카드가 없으면Hand (0): empty입니다.
제공된 코드는 빈 손을 출력하고, 카드 수를 읽은 다음 카드마다 RANK SUIT 형식의 한 줄을 읽습니다. 각 카드를 손에 추가하고 Drew와 카드를 출력한 뒤, 마지막으로 손을 출력합니다. 카드가 7 clubs와 12 hearts일 때 다음을 출력합니다.
Hand (0): empty
Drew 7 of clubs
Drew Q of hearts
Hand (2): 7 of clubs, Q of hearts코드는 playing_card.gd와 hand.gd에 작성하세요. main.gd에는 제공된 입력/출력 코드가 있으며 수정할 수 없습니다.
직접 해보기
extends Node
func _ready():
# 제공된 입력/출력 코드: 그대로 유지하세요
var hand := Hand.new()
print(hand)
var count := int(OS.read_string_from_stdin())
for i in count:
var parts := OS.read_string_from_stdin().split(" ")
var card := PlayingCard.new(int(parts[0]), parts[1])
hand.add(card)
print("Drew %s" % card)
print(hand)
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
객체 지향 프로그래밍의 모든 레슨
직접 연습해 보세요: 온라인 GDScript 컴파일러