Menu
CoddyTech

Добавление и удаление

Часть раздела Логика и потоки выполнения путешествия по 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 для множества без элементов.

challenge icon

Задание

Легко

Программа считывает команды, по одной в каждой строке, пока не встретит строку 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]
		# Добавьте или удалите предмет

	# Выведите инвентарь
quiz iconПроверьте себя

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

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

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