Menu
CoddyTech

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 locked

Un 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 10

Un 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.

challenge icon

Sfida

Facile

Scrivi 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: stampa Correct!
  • 0: stampa You 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
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore GDScript online