Menu
CoddyTech

Pola dictionary

Termasuk bagian Logika dan Alur dalam perjalanan GDScript di Coddy. Pelajaran 9 dari 78.

Pola dictionary mencantumkan kunci dan pola yang harus cocok dengan nilainya. Pola ini cocok dengan dictionary yang memiliki tepat kunci-kunci tersebut, dalam urutan apa pun:

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

Nilai "type" harus "move", dan nilai "dir", apa pun nilainya, disimpan dalam d. Dictionary dengan key yang tidak dicantumkan dalam pola tidak cocok. Tambahkan .. di akhir agar key tambahan diperbolehkan:

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

Kunci yang ditulis tanpa nilai hanya memeriksa apakah kunci tersebut ada: {"name", ..}: cocok dengan dictionary apa pun yang memiliki kunci "name". Guard juga berfungsi di sini: {"type": "attack", "damage": var dmg} when dmg > 50:.

challenge icon

Tantangan

Mudah

Program membaca peristiwa game yang ditulis sebagai pasangan key=value yang dipisahkan dengan koma, seperti type=move,dir=left, lalu menyimpannya di dictionary event (sudah ditulis). Semua nilainya berupa string.

Gunakan pernyataan match dengan pola dictionary, dalam urutan berikut:

  • Tepat dengan kunci type ("move") dan dir: cetak Moving dan arahnya
  • Tepat dengan kunci type ("attack") dan damage: cetak Taking , nilai damage, dan damage
  • type bernilai "heal", dengan kunci lainnya apa pun: cetak Healing
  • Dictionary lain apa pun yang memiliki kunci type: cetak Unknown event: dan nilai type
  • Hal lainnya: cetak Invalid event

Untuk input type=attack,damage=30, outputnya adalah:

Taking 30 damage

Peristiwa seperti type=move,dir=up,speed=2 memiliki kunci tambahan, jadi program mencetak Unknown event: move.

Coba sendiri

extends Node

func _ready():
	var event := {}
	for pair in OS.read_string_from_stdin().split(","):
		var kv := pair.split("=")
		event[kv[0]] = kv[1]
	# Cocokkan event dengan pola dictionary
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Logika dan Alur

Latihan sendiri: Compiler GDScript online