Guardie di match
Fa parte della sezione Logica e flusso del percorso GDScript di Coddy. Lezione 7 di 78.
Una guardia aggiunge una condizione a un pattern. Scrivi when e una condizione dopo il pattern: il pattern corrisponde solo se il valore corrisponde al pattern e la condizione è true. Le guardie esistono dalla versione Godot 4.4.
var hp := 15
match hp:
0:
print("Defeated")
var h when h < 20:
print("Low health: ", h)
_:
print("Healthy")Low health: 15GDScript non ha pattern di intervallo come 1..10. Un pattern di binding con una guardia svolge questo compito: var h when h < 20: corrisponde a ogni valore inferiore a 20 e gli assegna il nome h.
Quando una guardia è false, match passa al pattern successivo. I pattern vengono provati dall'alto verso il basso, quindi l'ordine determina quale blocco viene eseguito:
var temp := 32
match temp:
var t when t <= 0:
print("Freezing")
var t when t < 15:
print("Cold")
var t when t < 30:
print("Warm")
_:
print("Hot")HotIl secondo schema non ha bisogno di t > 0: una temperatura pari o inferiore a 0 corrispondeva già al primo. Una guardia può usare qualsiasi condizione, con altre variabili e and oppure or, e si adatta a qualsiasi schema: 5 when hard_mode: corrisponde a 5 solo quando hard_mode è true.
Sfida
FacileIl programma legge un'età come numero intero in age. Usa un'istruzione match con guardie per stampare la fascia d'età:
- da
0a12:Child - da
13a19:Teenager - da
20a64:Adult - da
65a120:Senior - Qualsiasi altro numero:
Invalid age
Ogni intervallo include entrambi gli estremi. Per l'input 15, l'output è:
TeenagerProvalo tu
extends Node
func _ready():
var age := int(OS.read_string_from_stdin())
# Stampa la fascia d'età usando match e le guardie
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