Match con variabili
Fa parte della sezione Logica e flusso del percorso GDScript di Coddy. Lezione 6 di 78.
Nella lezione Istruzione match, ogni modello era un valore letterale, come 1: o "bow":. Un modello può anche essere una costante o una variabile: match confronta il valore con ciò che quel nome contiene quando viene eseguita la riga:
const SECRET := 42
var guess := 42
match guess:
SECRET:
print("You found it!")
_:
print("Try again")You found it!Il secondo nuovo schema è lo schema di associazione: var seguito da un nuovo nome. Come _, corrisponde a qualsiasi valore e memorizza anche quel valore nella nuova variabile, che puoi usare all'interno del relativo blocco:
var level := 5
match level:
1:
print("Tutorial")
var n:
print("Level %d is locked" % n)Level 5 is lockedUn pattern di associazione è più utile quando fai corrispondere il risultato di un'espressione, che non ha un nome proprio:
var roll_a := 4
var roll_b := 6
match roll_a + roll_b:
12:
print("Double six!")
var total:
print("You rolled ", total)You rolled 10Un modello di associazione corrisponde a tutto, quindi va per ultimo, come _. Il suo nome deve essere nuovo: var level: nel secondo esempio causerebbe un errore, perché level esiste già. Inoltre, non può condividere una riga con altri modelli separati da virgole.
match confronta i tipi in modo rigoroso: la stringa "5" non corrisponde al pattern 5, e nemmeno il numero decimale 5.0. Converti il testo letto dall'input con int() prima di confrontarlo con i numeri.
Sfida
FacileScrivi un controllo per indovinare un numero. La costante SECRET contiene il numero segreto e il programma legge il tentativo del giocatore come numero intero in guess.
Scrivi un'istruzione match su guess con tre pattern:
- La costante
SECRET: stampaCorrect! 0: stampaYou gave up.- Un pattern di associazione per qualsiasi altro tentativo: stampa il tentativo seguito da
is not the number.
Per l'input 17, l'output è:
17 is not the number.Provalo tu
extends Node
func _ready():
const SECRET := 42
var guess := int(OS.read_string_from_stdin())
# Scrivi l'istruzione match qui sotto
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