Menu
CoddyTech

Dizi Kalıpları

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

Bir dizi kalıbı, dizi değişmezi gibi yazılır. Aynı boyuttaki ve öğeleri sırayla eşleşen bir diziyi eşleştirir. Kalıbın her öğesi bir değişmez, _ veya bir bağlama olabilir:

var point := [0, 7]
match point:
	[0, 0]:
		print("Origin")
	[0, var y]:
		print("On the y-axis at ", y)
	[var x, var y]:
		print("Point ", x, ", ", y)
On the y-axis at 7

Boyut aynı olmalıdır: [var x, var y], [1, 2, 3] ile eşleşmez. İstediğin sayıda ek öğeye (sıfır dahil) izin vermek için son öğe olarak .. yaz ve boş bir dizi için [] yaz:

var cmd := ["give", "sword", "Ana"]
match cmd:
	[]:
		print("Nothing typed")
	["give", var item, ..]:
		print("Giving ", item)
Giving sword

Koruyucular dizi desenleriyle de çalışır: [var a, var b] when a == b: birbirine eşit iki öğeyle eşleşir.

Dizi kalıpları yalnızca Array türüyle eşleşir. split() tarafından döndürülen PackedStringArray bunlarla asla eşleşmez. Sonucu Array olarak bildirilmiş bir değişkende saklayarak dönüştürün:

var words: Array = "go north".split(" ")
match words:
	["go", var dir]:
		print("Heading ", dir)
Heading north
challenge icon

Görev

Kolay

Program, x,y biçiminde yazılmış bir noktayı okur ve (önceden yazılmış olan) point dizisinde iki tam sayı olarak saklar. Noktanın nerede olduğunu yazdırmak için dizi kalıplarıyla bir match deyimi kullan ve uyan ilk kuralı uygula:

  • İkisi de 0: Origin
  • x değeri 0: ardından y gelen On the y-axis at y=
  • y değeri 0: ardından x gelen On the x-axis at x=
  • x ve y eşitse: ardından değerin geldiği On the diagonal at
  • Diğer durumlarda: iki değerle birlikte Point at (x, y)

0,5 girdisi için çıktı şöyledir:

On the y-axis at y=5

2,7 girdisi için ise:

Point at (2, 7)

Kendin dene

extends Node

func _ready():
	var parts := OS.read_string_from_stdin().split(",")
	var point := [int(parts[0]), int(parts[1])]
	# point değerini dizi 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