Menu
CoddyTech

O que é um conjunto?

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

Um conjunto é uma coleção de valores únicos: cada valor está nele uma vez ou não está nele. A pergunta que você faz a um conjunto é "este valor é um membro?". Os distintivos que um jogador conquistou, os níveis já visitados e os nomes de usuário já escolhidos são conjuntos.

Um array mantém todas as cópias que você adiciona:

var pickups := ["sword", "shield", "sword"]
print(pickups.size()) # 3

GDScript não tem um tipo Set. Em vez disso, você usa um dicionário: suas chaves são únicas, então as chaves são os membros do conjunto. Os valores não são usados e, por convenção, cada valor é true:

var items := {"sword": true, "shield": true}
items["sword"] = true # já é um membro: nada muda
print(items.size()) # 2
print(items.keys()) # ["sword", "shield"]

keys() retorna os membros como um array, na ordem em que foram adicionados pela primeira vez. Um conjunto vazio é um dicionário vazio, {}.

Um literal de conjunto lista cada elemento uma única vez. Escrever a mesma chave duas vezes dentro de {} é um erro que interrompe o programa antes de sua execução.

Para explicitar o tipo do conjunto, use um dicionário tipado: var badges: Dictionary[String, bool] = {}

challenge icon

Desafio

Fácil

Um jogador disputou quatro partidas e ganhou uma medalha em cada uma. Algumas medalhas se repetem. O programa lê quatro linhas de entrada, uma medalha por linha.

Adicione cada medalha ao conjunto badges e, em seguida, imprima o número de medalhas diferentes e os elementos do conjunto como um array. Para as medalhas Sniper, Medic, Sniper e Builder, a saída é:

Unique badges: 3
["Sniper", "Medic", "Builder"]

Experimente você mesmo

extends Node

func _ready():
	var badges := {}
	for i in range(4):
		var badge := OS.read_string_from_stdin()
		# Adicione o distintivo ao conjunto
		pass

	# Imprima a quantidade de distintivos e os distintivos
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