Menu
CoddyTech

Correspondência com Variáveis

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

Na lição Instrução match, todos os padrões eram valores literais, como 1: ou "bow":. Um padrão também pode ser uma constante ou uma variável: match compara o valor com o que esse nome contém quando a linha é executada:

const SECRET := 42
var guess := 42
match guess:
	SECRET:
		print("You found it!")
	_:
		print("Try again")
You found it!

O segundo padrão novo é o padrão de vinculação: var seguido de um nome novo. Como _, ele corresponde a qualquer valor e também armazena esse valor na nova variável, que você pode usar dentro do bloco:

var level := 5
match level:
	1:
		print("Tutorial")
	var n:
		print("Level %d is locked" % n)
Level 5 is locked

Um padrão de vinculação é mais útil quando você corresponde ao resultado de uma expressão, que não tem nome próprio:

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

Um padrão de vinculação corresponde a tudo, então ele fica por último, como _. Seu nome deve ser novo: var level: no segundo exemplo causaria um erro, porque level já existe. Ele também não pode compartilhar uma linha com outros padrões separados por vírgulas.

match compara os tipos estritamente: a string "5" não corresponde ao padrão 5, e o float 5.0 também não. Converta o texto lido da entrada com int() antes de compará-lo com números.

challenge icon

Desafio

Fácil

Escreva uma verificação para adivinhar um número. A constante SECRET contém o número secreto, e o programa lê o palpite do jogador como um inteiro em guess.

Escreva uma instrução match para guess com três padrões:

  • A constante SECRET: imprima Correct!
  • 0: imprima You gave up.
  • Um padrão de vinculação para qualquer outro palpite: imprima o palpite seguido de is not the number.

Para a entrada 17, a saída é:

17 is not the number.

Experimente você mesmo

extends Node

func _ready():
	const SECRET := 42
	var guess := int(OS.read_string_from_stdin())
	# Escreva a instrução match abaixo
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