추가 및 제거
Coddy GDScript 여정의 논리와 흐름 섹션에 포함된 레슨. 78개 중 33번째.
멤버를 추가하려면 해당 키에 true를 할당하세요. 이미 집합에 있는 멤버를 추가해도 아무것도 바뀌지 않으므로, 새 멤버인지 알아야 할 때는 먼저 has()로 확인하세요:
var inventory := {"rope": true}
if inventory.has("torch"):
print("Already have torch")
else:
inventory["torch"] = true
print("Added torch")멤버를 제거하려면 erase()를 호출하세요. 멤버가 제거되었을 때는 true를 반환하고, 해당 멤버가 집합에 없을 때는 false를 반환합니다. 멤버가 없어도 오류가 발생하지 않습니다:
print(inventory.erase("rope")) # true
print(inventory.erase("map")) # false
print(inventory) # { "torch": true }erase()는 불리언을 반환하므로 조건으로 바로 사용할 수 있습니다. if inventory.erase("map"):은 "map"이 멤버였을 때만 해당 블록을 실행합니다.
clear()는 모든 원소를 제거하고, size()는 원소의 개수를 세며, 원소가 없는 집합에서는 is_empty()가 true입니다.
챌린지
쉬움프로그램은 done 줄이 입력될 때까지 한 줄에 하나씩 명령을 읽습니다. 각 명령은 add ITEM 또는 remove ITEM입니다. 시작 코드는 이미 각 명령을 action과 item으로 분리합니다.
add의 경우: 항목이 새로운 항목이면 집합inventory에 추가하고Added ITEM을 출력합니다. 그렇지 않으면Already have ITEM을 출력합니다.remove의 경우: 항목이 집합에 있으면 제거하고Removed ITEM을 출력합니다. 그렇지 않으면No ITEM to remove를 출력합니다.
done 뒤에는 Inventory: 를 출력한 다음, 집합의 원소를 , 로 결합해 출력하거나 집합이 비어 있으면 Inventory: empty를 출력합니다. 다음 입력의 경우:
add torch
add rope
add torch
remove map
remove rope
done출력은 다음과 같습니다:
Added torch
Added rope
Already have torch
No map to remove
Removed rope
Inventory: torch직접 해보기
extends Node
func _ready():
var inventory := {}
while true:
var command := OS.read_string_from_stdin()
if command == "done":
break
var parts := command.split(" ")
var action := parts[0]
var item := parts[1]
# 아이템을 추가하거나 제거하기
# 인벤토리 출력하기
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
논리와 흐름의 모든 레슨
직접 연습해 보세요: 온라인 GDScript 컴파일러