Menu
CoddyTech

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: 15

GDScript 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")
Hot

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

challenge icon

Sfida

Facile

Il programma legge un'età come numero intero in age. Usa un'istruzione match con guardie per stampare la fascia d'età:

  • da 0 a 12: Child
  • da 13 a 19: Teenager
  • da 20 a 64: Adult
  • da 65 a 120: Senior
  • Qualsiasi altro numero: Invalid age

Ogni intervallo include entrambi gli estremi. Per l'input 15, l'output è:

Teenager

Provalo tu

extends Node

func _ready():
	var age := int(OS.read_string_from_stdin())
	# Stampa la fascia d'età usando match e le guardie
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