Dodawanie i usuwanie
Część sekcji Logika i przepływ programu ścieżki GDScript w Coddy. Lekcja 33 z 78.
Aby dodać element, przypisz do jego klucza wartość true. Dodanie elementu, który już znajduje się w zbiorze, niczego nie zmienia, więc jeśli chcesz wiedzieć, czy jest nowy, najpierw sprawdź to za pomocą has():
var inventory := {"rope": true}
if inventory.has("torch"):
print("Already have torch")
else:
inventory["torch"] = true
print("Added torch")Aby usunąć element, wywołaj erase(). Zwraca true, gdy element został usunięty, i false, gdy nie ma go w zbiorze. Brakujący element nigdy nie jest błędem:
print(inventory.erase("rope")) # true
print(inventory.erase("map")) # false
print(inventory) # { "torch": true }Ponieważ erase() zwraca wartość logiczną, możesz użyć jej bezpośrednio jako warunku: if inventory.erase("map"): wykonuje swój blok tylko wtedy, gdy "map" było elementem.
clear() usuwa każdy element, size() je zlicza, a is_empty() ma wartość true dla zbioru bez elementów.
Wyzwanie
ŁatwyProgram odczytuje polecenia, po jednym w każdym wierszu, aż do wiersza done. Każde polecenie ma postać add ITEM lub remove ITEM. Kod początkowy już dzieli każde polecenie na action i item.
- Dla
add: jeśli element jest nowy, dodaj go do zbioruinventoryi wypiszAdded ITEM. W przeciwnym razie wypiszAlready have ITEM. - Dla
remove: jeśli element znajduje się w zbiorze, usuń go i wypiszRemoved ITEM. W przeciwnym razie wypiszNo ITEM to remove.
Po done wypisz Inventory: , a następnie elementy połączone za pomocą , albo Inventory: empty, jeśli zbiór jest pusty. Dla danych wejściowych:
add torch
add rope
add torch
remove map
remove rope
donewynik to:
Added torch
Added rope
Already have torch
No map to remove
Removed rope
Inventory: torchSpróbuj swoich sił
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]
# Dodaj lub usuń przedmiot
# Wyświetl zawartość ekwipunku
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Logika i przepływ programu
1Łańcuchy znaków — zagadnienia zaawansowane
Metody łańcuchów znakówWyszukiwanie w łańcuchach znakówZastępowanie i przycinanieDzielenie i łączeniePodsumowanie — sprawdzanie nazwy użytkownika4Słowniki, część 2
Zagnieżdżone słownikiTablice słownikówŁączenie słownikówKopiowanie słownikówPodsumowanie – licznik częstotliwości7Typy wyliczeniowe
Czym jest typ wyliczeniowy?Definiowanie typu wyliczeniowegoWartości typu wyliczeniowegoTypy wyliczeniowe w matchPowtórka – sygnalizacja świetlna10Zaawansowane funkcje
Zwracanie wielu wartościFunkcje lambda — część 1Funkcje lambda — część 2Powtórka — sortowanie za pomocą lambdaFunkcje rekurencyjne — część 1Funkcje rekurencyjne — część 2Powtórka — sumowanie zagnieżdżonej tablicy13System zarządzania zapasami
Omówienie projektuDodawanie produktu2Zaawansowane podejmowanie decyzji
Dopasowanie ze zmiennymiStrażnicy dopasowaniaWzorce tablicWzorce słownikówSprawdzanie przynależnościPowtórka — parser poleceń5Aplikacja książki kontaktów
Wyświetlanie menuDodawanie kontaktu8Menedżer danych studentów
Przegląd projektuDodaj studenta3Tablice wielowymiarowe
Podstawy tablic 2DDostęp do elementów tablic 2DPętle zagnieżdżone z tablicami 2DPodsumowanie — tablice 2DTablice postrzępioneTypowe wzorce tablic 2DPodsumowanie — plansza do gry6Zbiory ze słownikami
Czym jest zbiór?Słownik jako zbiórDodawanie i usuwanieSuma i część wspólnaRóżnica zbiorówPowtórka – usuwanie duplikatów9Zaawansowana agregacja danych
Sumowanie wartościZnajdowanie minimum i maksimumSortowanie niestandardowePodsumowanie – Sortownik słownikówPoćwicz samodzielnie: Kompilator GDScript online