딕셔너리 패턴
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:.
챌린지
쉬움프로그램은 쉼표로 구분된 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 damagetype=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를 딕셔너리 패턴과 대조하기
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
논리와 흐름의 모든 레슨
직접 연습해 보세요: 온라인 GDScript 컴파일러