Enumerazioni in Match
Fa parte della sezione Logica e flusso del percorso GDScript di Coddy. Lezione 40 di 78.
Un'istruzione match può confrontare un valore con le opzioni di un enum. Ogni pattern è un'opzione, scritta con il nome dell'enum:
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")Questo stampa Slow down. Come in ogni match, diverse opzioni possono condividere un ramo, separate da virgole, e _ intercetta tutto il resto:
match light:
Light.RED, Light.YELLOW:
print("Wait")
_:
print("Go")Una funzione che restituisce un valore deve avere un return per ogni percorso. Anche quando i rami coprono tutte le opzioni, GDScript segnala Not all code paths return a value a meno che il match non abbia un ramo _ o non sia seguito da un return:
func next_light(light: Light) -> Light:
match light:
Light.RED:
return Light.GREEN
Light.GREEN:
return Light.YELLOW
_:
return Light.REDIl parametro e il tipo restituito sono l'enumerazione Light. La funzione è dichiarata al livello superiore, come l'enumerazione.
Sfida
FacileLo script dichiara l'enumerazione State con le opzioni IDLE, WALK, RUN, JUMP e FALL. Completa la funzione describe(): riceve uno stato e ne restituisce la descrizione, scelta con un match:
State.IDLE:"Standing still"State.WALKeState.RUN:"Moving"State.JUMPeState.FALL:"In the air"
Usa un ramo per WALK e RUN, e uno per JUMP e FALL. Il codice fornito in _ready() legge una riga di nomi di stati e stampa ciascuno con la relativa descrizione. Per l'input IDLE RUN FALL, l'output è:
IDLE: Standing still
RUN: Moving
FALL: In the airProvalo tu
extends Node
enum State { IDLE, WALK, RUN, JUMP, FALL }
func describe(state: State):
# Devuelve la descripción del estado con un 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]))
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Logica e flusso
1Stringhe in dettaglio
Metodi delle stringheRicerca nelle stringheSostituzione e trimDividere e unireRipasso - verifica del nome utente4Dizionari - Parte 2
Dizionari annidatiArray di dizionariUnire dizionariCopiare dizionariRiepilogo - Contatore di frequenza7Enumerazioni
Che cos'è un'enumerazione?Definire un'enumerazioneValori dell'enumerazioneEnumerazioni in MatchRiepilogo - Semaforo10Funzioni avanzate
Restituire più valoriFunzioni lambda - Parte 1Funzioni lambda - Parte 2Ripasso - Ordinamento con lambdaFunzioni ricorsive - Parte 1Funzioni ricorsive - Parte 2Ripasso - Somma di un array annidato13Sistema di gestione dell'inventario
Panoramica del progettoAggiungere un articolo2Decisioni avanzate
Match con variabiliGuardie di matchPattern per arrayPattern per dizionariVerifiche di appartenenzaRiepilogo - Parser di comandi5Applicazione Rubrica
Visualizzare il menuAggiungere un contatto8Gestione dei registri degli studenti
Panoramica del progettoAggiungi studente11Funzioni di ordine superiore
Il metodo mapIl metodo filterIl metodo reduceany e allRipasso - Validatore di emailRipasso - Elaboratore di numeri3Array multidimensionali
Fondamenti degli array 2DAccedere agli elementi di un array 2DCicli annidati con array 2DRipasso - Array 2DArray frastagliatiSchemi comuni con gli array 2DRipasso - Tabellone di gioco6Insiemi con i dizionari
Che cos'è un insieme?Il dizionario come insiemeAggiungere e rimuovereUnione e intersezioneDifferenza tra insiemiRiepilogo - Rimuovere i duplicati9Aggregazione avanzata dei dati
Somma dei valoriTrovare minimo e massimoOrdinamento personalizzatoRiepilogo - Ordinatore di dizionariEsercitati da solo: Compilatore GDScript online