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: 15GDScript 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")HotO 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.
Desafio
FácilO programa lê uma idade como um número inteiro em age. Use uma instrução match com guardas para imprimir a faixa etária:
0a12:Child13a19:Teenager20a64:Adult65a120:Senior- Qualquer outro número:
Invalid age
Todos os intervalos incluem as duas extremidades. Para a entrada 15, a saída é:
TeenagerExperimente você mesmo
extends Node
func _ready():
var age := int(OS.read_string_from_stdin())
# Imprima a faixa etária usando match e guards
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
1Strings em Profundidade
Métodos de StringBusca em StringsSubstituir e Remover EspaçosDividir e UnirRecapitulação - Verificação de Nome de Usuário4Dicionários - Parte 2
Dicionários aninhadosArrays de dicionáriosMesclando dicionáriosCopiando dicionáriosRevisão - Contador de frequência10Funções Avançadas
Retornando Múltiplos ValoresFunções Lambda Parte 1Funções Lambda Parte 2Revisão - Ordenação com LambdaFunções Recursivas Parte 1Funções Recursivas Parte 2Revisão - Somando Array Aninhado13Sistema de Gerenciamento de Estoque
Visão Geral do ProjetoAdicionar Item2Tomada de Decisões Avançada
Correspondência com VariáveisGuards de CorrespondênciaPadrões de ArrayPadrões de DicionárioVerificações de PertinênciaRevisão - Analisador de Comandos5Aplicativo de Agenda de Contatos
Exibir menuAdicionar contato8Gerenciador de Registros de Alunos
Visão Geral do ProjetoAdicionar Aluno3Arrays multidimensionais
Fundamentos de arrays 2DAcessando elementos de arrays 2DLaços aninhados com arrays 2DRevisão - arrays 2DArrays irregularesPadrões comuns de arrays 2DRevisão - tabuleiro de jogo6Conjuntos com Dicionários
O que é um conjunto?Dicionário como conjuntoAdicionando e removendoUnião e interseçãoDiferença entre conjuntosRevisão - Removendo duplicatas9Agregação Avançada de Dados
Somando ValoresEncontrando o Mínimo e o MáximoOrdenação PersonalizadaRevisão - Ordenador de DicionáriosPratique por conta própria: Compilador de GDScript online