Aktualizowanie słowników
Część sekcji Logika i przepływ programu ścieżki Swift w Coddy. Lekcja 14 z 56.
Do słownika zapisujesz w taki sam sposób, w jaki odczytujesz z niego dane: za pomocą indeksu dolnego.
var prices: [String: Int] = ["apple": 1]
prices["bread"] = 3 // dodaje klucz
prices["apple"] = 2 // aktualizuje istniejący klucz
prices["apple"] = nil // usuwa kluczDwie nazwane metody robią to samo w bardziej jawny sposób:
prices.updateValue(5, forKey: "milk") // zwraca poprzednią wartość lub nil
prices.removeValue(forKey: "bread") // zwraca usuniętą wartość lub nilMetody z nazwą zwracają poprzednią wartość, co jest przydatne, gdy chcesz wiedzieć, czy klucz już istniał.
Wzorzec z indeksem dolnym z poprzedniej lekcji świetnie łączy się z mutacją — tak tworzysz licznik bez pisania if:
var counts: [String: Int] = [:]
for letter in ["a", "b", "a"] {
counts[letter, default: 0] += 1
}
// counts == ["a": 2, "b": 1]Wyzwanie
ŚredniOdczytaj jeden wiersz wejścia: listę operacji na początkowym słowniku, rozdzielonych przecinkami. Każda operacja ma jedną z postaci:
set:<key>:<value>dodaj lub zaktualizuj (wartość jest liczbą całkowitą)add:<key>:<value>dodaj wartość do istniejącej (użyj wzorca z indeksem domyślnym)del:<key>usuń klucz
Po zastosowaniu każdej operacji w podanej kolejności do początkowo pustego [String: Int] wypisz klucze w kolejności alfabetycznej, po jednym w wierszu, w formacie <key>=<value>.
Dla wejścia set:a:5,add:a:3,set:b:1,del:b,add:c:2 wynikiem jest:
a=8
c=2Spróbuj swoich sił
let ops = readLine()!.components(separatedBy: ",")
var dict: [String: Int] = [:]
// TODO: sparsuj każdą op i wykonaj set/add/del; wypisz posortowane klucze wraz z wartościami
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
1Dogłębnie o ciągach znaków
Liczba i indeksyWielkość liter i usuwanie białych znakówWyszukiwanie w ciągach znakówDzielenie i łączenieZastępowanie podciągówPodsumowanie — sprawdzanie nazwy użytkownika4Zbiory
Tworzenie zbiorówSuma i część wspólnaRóżnica i różnica symetrycznaPodzbiór i nadzbiórPowtórka — filtr tagów7Projekt – Śledzenie nawyków
Przegląd projektuOznacz jako wykonane10Projekt — silnik quizów
Przegląd projektuZadawanie pytań2Zakresy i kroki
Zakresy domknięte i półotwarteKrokMetody zakresówZakresy w instrukcji switchPowtórka — siatka kalendarza5Funkcje wyższego rzędu, część 1
MapFilterReduceŁączenie map, filter i reducePodsumowanie – statystyki słów3Słowniki
Deklarowanie słownikówWyszukiwanie opcjonalneAktualizowanie słownikówIterowanie po słownikachGrupowanie wartościPodsumowanie – inwentarz6Funkcje wyższego rzędu, cz. 2
compactMapflatMapsorted(by:)Tworzenie potokówPowtórzenie – tabela wynikówPoćwicz samodzielnie: Edytor online Swift