Menu
CoddyTech

Что такое множество?

Часть раздела Логика и потоки выполнения путешествия по GDScript на Coddy. Урок 31 из 78.

Множество — это коллекция уникальных значений: каждое значение либо содержится в нём один раз, либо не содержится вовсе. Множество отвечает на вопрос: «является ли это значение его элементом?». Значки, заработанные игроком, уже пройденные уровни и занятые имена пользователей — это множества.

Массив хранит каждую добавленную копию:

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

В GDScript нет типа Set. Вместо него используется словарь: его ключи уникальны, поэтому ключи являются элементами множества. Значения не используются, и по соглашению каждое значение — true:

var items := {"sword": true, "shield": true}
items["sword"] = true # уже является элементом: ничего не меняется
print(items.size()) # 2
print(items.keys()) # ["sword", "shield"]

keys() возвращает элементы в виде массива в том порядке, в котором они были добавлены. Пустое множество — это пустой словарь {}.

Литерал множества перечисляет каждый элемент один раз. Если записать один и тот же ключ дважды внутри {}, возникнет ошибка, из-за которой программа не запустится.

Чтобы явно указать тип множества, используйте типизированный словарь: var badges: Dictionary[String, bool] = {}

challenge icon

Задание

Легко

Игрок сыграл четыре матча и заработал по одному значку в каждом. Некоторые значки повторяются. Программа считывает четыре строки ввода, по одному названию значка в каждой.

Добавь каждый значок в множество badges, затем выведи количество различных значков и элементы множества в виде массива. Для значков Sniper, Medic, Sniper и Builder результат будет таким:

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

Попробуйте сами

extends Node

func _ready():
	var badges := {}
	for i in range(4):
		var badge := OS.read_string_from_stdin()
		# Добавьте значок в набор
		pass

	# Выведите количество значков и сами значки
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Логика и потоки выполнения

Потренируйтесь самостоятельно: Онлайн-компилятор GDScript