Что такое множество?
Часть раздела Логика и потоки выполнения путешествия по 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] = {}
Задание
ЛегкоИгрок сыграл четыре матча и заработал по одному значку в каждом. Некоторые значки повторяются. Программа считывает четыре строки ввода, по одному названию значка в каждой.
Добавь каждый значок в множество 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
# Выведите количество значков и сами значки
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и потоки выполнения
1Строки: углублённое изучение
Методы строкПоиск в строкахЗамена и обрезка пробеловРазделение и объединениеПовторение — проверка имени пользователя4Словари. Часть 2
Вложенные словариМассивы словарейОбъединение словарейКопирование словарейПовторение — подсчёт частоты10Продвинутые функции
Возврат нескольких значенийЛямбда-функции. Часть 1Лямбда-функции. Часть 2Повторение — сортировка с помощью лямбда-функцииРекурсивные функции. Часть 1Рекурсивные функции. Часть 2Повторение — сумма вложенного массива13Система управления запасами
Обзор проектаДобавление товара2Продвинутое управление ветвлением
Сопоставление с переменнымиУсловия в шаблонахШаблоны массивовШаблоны словарейПроверка принадлежностиИтоги — парсер команд5Приложение «Телефонная книга»
Показать менюДобавить контакт8Менеджер успеваемости студентов
Обзор проектаДобавить студента3Многомерные массивы
Основы двумерных массивовДоступ к элементам двумерного массиваВложенные циклы с двумерными массивамиПовторение: двумерные массивыРваные массивыТипичные шаблоны работы с двумерными массивамиПовторение: игровое поле6Множества и словари
Что такое множество?Словарь как множествоДобавление и удалениеОбъединение и пересечениеРазность множествПовторение — удаление дубликатовПотренируйтесь самостоятельно: Онлайн-компилятор GDScript