Czym jest zbiór?
Część sekcji Logika i przepływ programu ścieżki GDScript w Coddy. Lekcja 31 z 78.
Zbiór to kolekcja unikalnych wartości: każda wartość występuje w nim raz albo wcale. Pytanie, które zadajesz zbiorowi, brzmi: „czy ta wartość jest jego elementem?”. Odznaki zdobyte przez gracza, odwiedzone już poziomy i zajęte już nazwy użytkowników to zbiory.
Tablica przechowuje każdą kopię, którą dodasz:
var pickups := ["sword", "shield", "sword"]
print(pickups.size()) # 3GDScript nie ma typu Set. Zamiast tego używasz słownika: jego klucze są unikalne, więc klucze są elementami zbioru. Wartości nie są używane i zgodnie z konwencją każda wartość to true:
var items := {"sword": true, "shield": true}
items["sword"] = true # już należy do zbioru: nic się nie zmienia
print(items.size()) # 2
print(items.keys()) # ["sword", "shield"]keys() zwraca elementy jako tablicę, w kolejności, w jakiej zostały dodane. Pusty zbiór to pusty słownik, {}.
Literał zbioru wymienia każdy element tylko raz. Zapisanie tego samego klucza dwa razy wewnątrz {} jest błędem, który zatrzymuje program przed jego uruchomieniem.
Aby jawnie określić typ zestawu, użyj typowanego słownika: var badges: Dictionary[String, bool] = {}
Wyzwanie
ŁatwyGracz rozegrał cztery mecze i zdobył po jednej odznace w każdym z nich. Niektóre odznaki się powtarzają. Program odczytuje cztery wiersze danych wejściowych, po jednej nazwie odznaki w każdym wierszu.
Dodaj każdą odznakę do zbioru badges, a następnie wypisz liczbę różnych odznak i elementy zbioru jako tablicę. Dla odznak Sniper, Medic, Sniper i Builder wynik to:
Unique badges: 3
["Sniper", "Medic", "Builder"]Spróbuj swoich sił
extends Node
func _ready():
var badges := {}
for i in range(4):
var badge := OS.read_string_from_stdin()
# Dodaj odznakę do zbioru
pass
# Wypisz liczbę odznak oraz same odznaki
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