Menu
CoddyTech

추가 및 제거

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입니다.

challenge icon

챌린지

쉬움

프로그램은 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]
		# 아이템을 추가하거나 제거하기

	# 인벤토리 출력하기
quiz icon실력 점검

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

논리와 흐름의 모든 레슨

직접 연습해 보세요: 온라인 GDScript 컴파일러