Menu
CoddyTech

Enum dalam Match

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

Pernyataan match dapat membandingkan nilai dengan opsi enum. Setiap pola adalah opsi yang ditulis dengan nama enum-nya:

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")

Ini mencetak Slow down. Seperti pada setiap match, beberapa opsi dapat berbagi satu cabang, dipisahkan dengan koma, dan _ menangkap semua yang lain:

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

Fungsi yang mengembalikan nilai memerlukan return pada setiap jalur. Bahkan saat percabangan mencakup semua kemungkinan, GDScript melaporkan Not all code paths return a value kecuali match memiliki cabang _ atau diikuti oleh return:

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

Parameter dan tipe pengembaliannya adalah enum Light. Fungsi ini dideklarasikan di tingkat teratas, seperti enum tersebut.

challenge icon

Tantangan

Mudah

Skrip mendeklarasikan enum State dengan opsi IDLE, WALK, RUN, JUMP dan FALL. Lengkapi fungsi describe(): fungsi ini menerima state dan mengembalikan deskripsinya, yang dipilih dengan match:

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

Gunakan satu cabang untuk WALK dan RUN, serta satu cabang untuk JUMP dan FALL. Kode yang diberikan di _ready() membaca satu baris nama state dan mencetak setiap nama beserta deskripsinya. Untuk input IDLE RUN FALL, output-nya adalah:

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

Coba sendiri

extends Node

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

func describe(state: State):
	# Kembalikan deskripsi state menggunakan match
	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 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