Menu
CoddyTech

Padrões de Array

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

Um padrão de array é escrito como um literal de array. Ele corresponde a um array do mesmo tamanho cujos elementos correspondem um a um. Cada elemento do padrão pode ser um literal, _ ou uma vinculação:

var point := [0, 7]
match point:
	[0, 0]:
		print("Origin")
	[0, var y]:
		print("On the y-axis at ", y)
	[var x, var y]:
		print("Point ", x, ", ", y)
On the y-axis at 7

O tamanho deve ser o mesmo: [var x, var y] não corresponde a [1, 2, 3]. Coloque .. como último elemento para permitir qualquer número de elementos extras (incluindo zero) e escreva [] para um array vazio:

var cmd := ["give", "sword", "Ana"]
match cmd:
	[]:
		print("Nothing typed")
	["give", var item, ..]:
		print("Giving ", item)
Giving sword

As guardas também funcionam com padrões de array: [var a, var b] when a == b: corresponde a dois elementos iguais.

Os padrões de array correspondem apenas ao tipo Array. O PackedStringArray retornado por split() nunca corresponde a eles. Armazene o resultado em uma variável declarada como Array, que o converte:

var words: Array = "go north".split(" ")
match words:
	["go", var dir]:
		print("Heading ", dir)
Heading north
challenge icon

Desafio

Fácil

O programa lê um ponto escrito como x,y e o armazena no array point como dois números inteiros (já escrito). Use uma instrução match com padrões de array para imprimir onde o ponto está, usando a primeira regra que se encaixar:

  • Ambos são 0: Origin
  • x é 0: On the y-axis at y= seguido de y
  • y é 0: On the x-axis at x= seguido de x
  • x e y são iguais: On the diagonal at seguido do valor
  • Qualquer outro caso: Point at (x, y) com os dois valores

Para a entrada 0,5, a saída é:

On the y-axis at y=5

Para a entrada 2,7, é:

Point at (2, 7)

Experimente você mesmo

extends Node

func _ready():
	var parts := OS.read_string_from_stdin().split(",")
	var point := [int(parts[0]), int(parts[1])]
	# Verifique se point corresponde aos padrões de array
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