Menu
CoddyTech

Guards de Correspondência

Parte da seção Lógica e fluxo do Journey de GDScript da Coddy. Lição 7 de 78.

Uma guarda adiciona uma condição a um padrão. Escreva when e uma condição após o padrão: o padrão corresponde somente se o valor corresponder ao padrão e a condição for true. Guardas existem desde o 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 não tem padrões de intervalo como 1..10. Um padrão de vinculação com uma condição faz esse trabalho: var h when h < 20: corresponde a todos os valores abaixo de 20 e os nomeia como h.

Quando uma guarda é false, match passa para o próximo padrão. Os padrões são testados de cima para baixo, então a ordem determina qual bloco é executado:

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

O segundo padrão não precisa de t > 0: uma temperatura igual a 0 ou abaixo disso já correspondeu ao primeiro. Uma guarda pode usar qualquer condição, com outras variáveis e and ou or, e se encaixa em qualquer padrão: 5 when hard_mode: corresponde a 5 somente enquanto hard_mode for true.

challenge icon

Desafio

Fácil

O programa lê uma idade como um número inteiro em age. Use uma instrução match com guardas para imprimir a faixa etária:

  • 0 a 12: Child
  • 13 a 19: Teenager
  • 20 a 64: Adult
  • 65 a 120: Senior
  • Qualquer outro número: Invalid age

Todos os intervalos incluem as duas extremidades. Para a entrada 15, a saída é:

Teenager

Experimente você mesmo

extends Node

func _ready():
	var age := int(OS.read_string_from_stdin())
	# Imprima a faixa etária usando match e guards
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Lógica e fluxo

Pratique por conta própria: Compilador de GDScript online