Добавление и удаление
Часть раздела Логика и потоки выполнения путешествия по GDScript на Coddy. Урок 33 из 78.
Чтобы добавить элемент, присвойте его ключу значение true. Добавление элемента, который уже есть в множестве, ничего не меняет, поэтому, если нужно узнать, новый ли это элемент, сначала проверьте это с помощью has():
var inventory := {"rope": true}
if inventory.has("torch"):
print("Already have torch")
else:
inventory["torch"] = true
print("Added torch")Чтобы удалить элемент, вызови erase(). Метод возвращает true, если элемент был удалён, и false, если его не было в наборе. Отсутствие элемента никогда не является ошибкой:
print(inventory.erase("rope")) # true
print(inventory.erase("map")) # false
print(inventory) # { "torch": true }Поскольку erase() возвращает логическое значение, вы можете использовать его непосредственно как условие: if inventory.erase("map"): выполняет свой блок только в том случае, если "map" был элементом множества.
clear() удаляет все элементы, size() подсчитывает их, а is_empty() возвращает true для множества без элементов.
Задание
ЛегкоПрограмма считывает команды, по одной в каждой строке, пока не встретит строку done. Каждая команда имеет вид add ITEM или remove ITEM. Стартовый код уже разделяет каждую команду на action и item.
- Для
add: если элемента ещё нет, добавь его во множествоinventoryи выведиAdded ITEM. Иначе выведиAlready have ITEM. - Для
remove: если элемент есть во множестве, удали его и выведиRemoved ITEM. Иначе выведиNo ITEM to remove.
После done выведи Inventory: , а затем элементы, соединённые с помощью , , или Inventory: empty, если множество пусто. Для ввода:
add torch
add rope
add torch
remove map
remove rope
doneвывод будет таким:
Added torch
Added rope
Already have torch
No map to remove
Removed rope
Inventory: torchПопробуйте сами
extends Node
func _ready():
var inventory := {}
while true:
var command := OS.read_string_from_stdin()
if command == "done":
break
var parts := command.split(" ")
var action := parts[0]
var item := parts[1]
# Добавьте или удалите предмет
# Выведите инвентарь
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и потоки выполнения
1Строки: углублённое изучение
Методы строкПоиск в строкахЗамена и обрезка пробеловРазделение и объединениеПовторение — проверка имени пользователя4Словари. Часть 2
Вложенные словариМассивы словарейОбъединение словарейКопирование словарейПовторение — подсчёт частоты10Продвинутые функции
Возврат нескольких значенийЛямбда-функции. Часть 1Лямбда-функции. Часть 2Повторение — сортировка с помощью лямбда-функцииРекурсивные функции. Часть 1Рекурсивные функции. Часть 2Повторение — сумма вложенного массива13Система управления запасами
Обзор проектаДобавление товара2Продвинутое управление ветвлением
Сопоставление с переменнымиУсловия в шаблонахШаблоны массивовШаблоны словарейПроверка принадлежностиИтоги — парсер команд5Приложение «Телефонная книга»
Показать менюДобавить контакт8Менеджер успеваемости студентов
Обзор проектаДобавить студента3Многомерные массивы
Основы двумерных массивовДоступ к элементам двумерного массиваВложенные циклы с двумерными массивамиПовторение: двумерные массивыРваные массивыТипичные шаблоны работы с двумерными массивамиПовторение: игровое поле6Множества и словари
Что такое множество?Словарь как множествоДобавление и удалениеОбъединение и пересечениеРазность множествПовторение — удаление дубликатовПотренируйтесь самостоятельно: Онлайн-компилятор GDScript