Menu
CoddyTech

Sözlük Kalıpları

Coddy'nin GDScript Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 9 / 78.

Bir sözlük kalıbı, anahtarları ve değerlerinin eşleşmesi gereken kalıpları listeler. Herhangi bir sırada, tam olarak bu anahtarlara sahip bir sözlükle eşleşir:

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

"type" değerinin "move" olması gerekir ve "dir" değerinin ne olduğuna bakılmaksızın bu değer d içinde saklanır. Desenin listelemediği bir anahtara sahip sözlük eşleşmez. Ek anahtarlara izin vermek için sona .. ekleyin:

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

Değer olmadan yazılan bir anahtar, yalnızca anahtarın var olup olmadığını kontrol eder: {"name", ..}:, "name" anahtarına sahip herhangi bir sözlükle eşleşir. Koruyucular burada da çalışır: {"type": "attack", "damage": var dmg} when dmg > 50:.

challenge icon

Görev

Kolay

Program, virgüllerle ayrılmış key=value çiftleri olarak yazılmış bir oyun olayını, örneğin type=move,dir=left, okur ve (önceden yazılmış olan) event sözlüğünde saklar. Tüm değerler dizgedir.

Sözlük desenleriyle bir match deyimini şu sırayla kullan:

  • Tam olarak type ("move") ve dir anahtarları: Moving ve yönü yazdır
  • Tam olarak type ("attack") ve damage anahtarları: Taking , hasarı ve damage yazdır
  • type değeri "heal" ve başka anahtarlar da olabilir: Healing yazdır
  • type anahtarı olan diğer tüm sözlükler: Unknown event: ve türü yazdır
  • Diğer her şey: Invalid event yazdır

type=attack,damage=30 girdisi için çıktı şöyledir:

Taking 30 damage

type=move,dir=up,speed=2 gibi bir olayda fazladan bir anahtar bulunur, bu nedenle Unknown event: move yazdırır.

Kendin dene

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 değişkenini sözlük kalıplarıyla eşleştir
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Mantık ve Akış bölümündeki tüm dersler

Kendi başına pratik yap: Online GDScript derleyicisi