Menu
CoddyTech

Match İçinde Enum'lar

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

Bir match ifadesi, bir değeri enum seçenekleriyle karşılaştırabilir. Her desen, enum adıyla yazılan bir seçenektir:

enum Light { RED, YELLOW, GREEN }

func _ready():
	var light := Light.YELLOW
	match light:
		Light.RED:
			print("Stop")
		Light.YELLOW:
			print("Slow down")
		Light.GREEN:
			print("Go")

Bu, Slow down yazdırır. Her match ifadesinde olduğu gibi, birden fazla seçenek virgülle ayrılarak aynı dalı paylaşabilir ve _ diğer her şeyi yakalar:

match light:
	Light.RED, Light.YELLOW:
		print("Wait")
	_:
		print("Go")

Bir değer döndüren bir fonksiyonun her yolda bir return ifadesi bulunmalıdır. Dallar tüm seçenekleri kapsasa bile, match içinde bir _ dalı yoksa veya ardından bir return gelmiyorsa GDScript Not all code paths return a value hatasını verir:

func next_light(light: Light) -> Light:
	match light:
		Light.RED:
			return Light.GREEN
		Light.GREEN:
			return Light.YELLOW
		_:
			return Light.RED

Parametre ve dönüş türü, Light enum'udur. Fonksiyon, enum gibi üst düzeyde tanımlanır.

challenge icon

Görev

Kolay

Betik, State enum'unu IDLE, WALK, RUN, JUMP ve FALL seçenekleriyle tanımlar. describe() işlevini tamamla: bir durum alır ve match kullanarak seçilen açıklamasını döndürür:

  • State.IDLE: "Standing still"
  • State.WALK ve State.RUN: "Moving"
  • State.JUMP ve State.FALL: "In the air"

WALK ve RUN için tek bir dal, JUMP ve FALL için de tek bir dal kullan. Verilen _ready() kodu, durum adlarından oluşan bir satırı okur ve her birini açıklamasıyla birlikte yazdırır. IDLE RUN FALL girdisi için çıktı şöyledir:

IDLE: Standing still
RUN: Moving
FALL: In the air

Kendin dene

extends Node

enum State { IDLE, WALK, RUN, JUMP, FALL }

func describe(state: State):
	# match kullanarak durumun açıklamasını döndür
	pass

func _ready():
	var names := OS.read_string_from_stdin().split(" ", false)
	for state_name in names:
		print(state_name, ": ", describe(State[state_name]))
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