Menu
CoddyTech

딕셔너리 패턴

Coddy GDScript 여정의 논리와 흐름 섹션에 포함된 레슨. 78개 중 9번째.

딕셔너리 패턴은 키와 해당 키의 값이 일치해야 하는 패턴을 나열합니다. 순서는 상관없이 정확히 해당 키만 가진 딕셔너리와 일치합니다:

var event := {"type": "move", "dir": "left"}
match event:
	{"type": "jump"}:
		print("Jump!")
	{"type": "move", "dir": var d}:
		print("Moving ", d)
Moving left

"type"의 값은 "move"여야 하며, "dir"의 값은 무엇이든 d에 저장됩니다. 패턴에 나열되지 않은 키가 있는 딕셔너리는 일치하지 않습니다. 추가 키를 허용하려면 끝에 ..를 추가하세요.

var hit := {"type": "attack", "damage": 30, "crit": true}
match hit:
	{"type": "attack", "damage": _}:
		print("Exactly two keys")
	{"type": "attack", "damage": var dmg, ..}:
		print("Hit for ", dmg)
Hit for 30

값 없이 작성된 키는 해당 키가 존재하는지만 확인합니다. {"name", ..}:는 "name" 키가 있는 모든 딕셔너리와 일치합니다. 가드도 여기서 작동합니다. {"type": "attack", "damage": var dmg} when dmg > 50:.

challenge icon

챌린지

쉬움

프로그램은 쉼표로 구분된 key=value 쌍으로 작성된 게임 이벤트(예: type=move,dir=left)를 읽고, 이를 사전 event에 저장합니다(이미 작성되어 있음). 모든 값은 문자열입니다.

사전 패턴을 사용하는 match 문을 다음 순서대로 사용하세요.

  • 키가 정확히 type("move")와 dir인 경우: Moving 과 방향을 출력합니다.
  • 키가 정확히 type("attack")와 damage인 경우: Taking , 피해량, damage를 출력합니다.
  • type이 "heal"이고 다른 키가 무엇이든 상관없는 경우: Healing을 출력합니다.
  • type 키가 있는 다른 모든 사전: Unknown event: 와 유형을 출력합니다.
  • 그 밖의 모든 경우: Invalid event을 출력합니다.

입력이 type=attack,damage=30이면 출력은 다음과 같습니다.

Taking 30 damage

type=move,dir=up,speed=2와 같은 이벤트에는 추가 키가 있으므로 Unknown event: move를 출력합니다.

직접 해보기

extends Node

func _ready():
	var event := {}
	for pair in OS.read_string_from_stdin().split(","):
		var kv := pair.split("=")
		event[kv[0]] = kv[1]
	# event를 딕셔너리 패턴과 대조하기
quiz icon실력 점검

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

논리와 흐름의 모든 레슨

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