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.REDParameter dan tipe pengembaliannya adalah enum Light. Fungsi ini dideklarasikan di tingkat teratas, seperti enum tersebut.
Tantangan
MudahSkrip 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.WALKdanState.RUN:"Moving"State.JUMPdanState.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 airCoba 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]))
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Logika dan Alur
1Mendalami String
Method untuk StringMencari dalam StringMengganti dan Menghapus SpasiMemisahkan dan MenggabungkanUlasan: Memeriksa Nama Pengguna4Dictionary Bagian 2
Dictionary BersarangArray berisi DictionaryMenggabungkan DictionaryMenyalin DictionaryRangkuman: Penghitung Frekuensi10Fungsi Lanjutan
Mengembalikan Beberapa NilaiFungsi Lambda Bagian 1Fungsi Lambda Bagian 2Ringkasan: Mengurutkan dengan LambdaFungsi Rekursif Bagian 1Fungsi Rekursif Bagian 2Ringkasan: Menjumlahkan array Bersarang13Sistem Manajemen Inventaris
Ikhtisar ProyekTambahkan Barang2Pengambilan Keputusan Lanjutan
Pencocokan dengan VariabelGuard pada MatchPola arrayPola dictionaryPemeriksaan KeanggotaanUlasan: Parser Perintah5Aplikasi Buku Kontak
Tampilkan MenuTambah Kontak8Pengelola Data Siswa
Gambaran Umum ProyekTambah Siswa11Fungsi Tingkat Tinggi
Method mapMethod filterMethod reduceany dan allUlasan: Validator EmailUlasan: Pemroses Angka3Array Multidimensi
Dasar-Dasar Array 2DMengakses Elemen Array 2DNested Loop dengan Array 2DRangkuman: Array 2DArray Tidak BeraturanPola Umum Array 2DRangkuman: Papan Permainan6Set dengan Dictionary
Apa Itu Set?Dictionary sebagai SetMenambahkan dan MenghapusUnion dan IntersectionSelisih SetRangkuman: Menghapus DuplikatLatihan sendiri: Compiler GDScript online