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.REDParametre ve dönüş türü, Light enum'udur. Fonksiyon, enum gibi üst düzeyde tanımlanır.
Görev
KolayBetik, 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.WALKveState.RUN:"Moving"State.JUMPveState.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 airKendin 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]))
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
1String’leri Derinlemesine İnceleme
String MetotlarıString’lerde AramaDeğiştirme ve KırpmaBölme ve BirleştirmeTekrar: Kullanıcı Adı Kontrolü4Sözlükler Bölüm 2
İç İçe SözlüklerSözlük DizileriSözlükleri BirleştirmeSözlükleri KopyalamaTekrar - Frekans Sayacı10İleri Düzey Fonksiyonlar
Birden Fazla Değer DöndürmeLambda Fonksiyonları Bölüm 1Lambda Fonksiyonları Bölüm 2Tekrar - Lambda ile SıralamaÖzyinelemeli Fonksiyonlar Bölüm 1Özyinelemeli Fonksiyonlar Bölüm 2Tekrar - İç İçe Dizilerin Toplamı13Envanter Yönetim Sistemi
Projeye Genel BakışÜrün Ekle2İleri Düzey Karar Verme
Değişkenlerle EşleştirmeEşleştirme KoşullarıDizi KalıplarıSözlük KalıplarıÜyelik KontrolleriÖzet - Komut Ayrıştırıcı5Rehber Uygulaması
Menüyü GörüntüleKişi Ekle8Öğrenci Kayıt Yöneticisi
Proje Genel BakışıÖğrenci Ekle11Üst Düzey Fonksiyonlar
map Metodufilter Metodureduce Metoduany ve allTekrar - E-posta DoğrulayıcıTekrar - Sayı İşleyici3Çok Boyutlu Diziler
2B Dizilere Giriş2B Dizi Elemanlarına Erişim2B Dizilerle İç İçe DöngülerTekrar - 2B DizilerDüzensiz DizilerYaygın 2B Dizi ÖrüntüleriTekrar - Oyun Tahtası6Sözlüklerle Kümeler
Küme Nedir?Küme Olarak SözlükEkleme ve SilmeBirleşim ve KesişimKüme FarkıTekrar: Yinelenenleri Silme9Gelişmiş Veri Toplama
Değerleri ToplamaEn Küçük ve En Büyük Değeri BulmaÖzel SıralamaÖzet - Sözlük SıralayıcıKendi başına pratik yap: Online GDScript derleyicisi