Deklarowanie słowników
Część sekcji Logika i przepływ programu ścieżki Swift w Coddy. Lekcja 12 z 56.
Słownik to nieuporządkowany zbiór par klucz/wartość. Typ klucza i typ wartości są ustalane podczas jego tworzenia.
var prices: [String: Int] = [
"apple": 1,
"bread": 3,
"milk": 4
]
print(prices.count) // 3
print(prices.isEmpty) // falseAdnotację typu [String: Int] można odczytać jako „klucze są typu String, wartości są typu Int”. Swift zwykle potrafi wywnioskować typ na podstawie literału, ale zapisanie go sprawia, że puste inicjalizatory są jednoznaczne:
var counts: [String: Int] = [:]
// w przeciwieństwie do pustej tablicy, która również wymagałaby określenia typuOdczytanie istniejącego klucza zwraca wartość. Odczytanie nieistniejącego klucza zwraca nil; ta część zostanie omówiona w następnej lekcji.
Wyzwanie
ŁatwyWczytaj trzy wiersze danych wejściowych: imię, kraj i wiek jako liczbę całkowitą. Zbuduj jeden słownik o nazwie person z kluczami typu String i odczytanymi wartościami (wiek pozostaje typu Int, więc potrzebny będzie heterogeniczny typ wartości — zobacz podpowiedź).
Wypisz trzy wiersze:
- Liczbę wpisów w słowniku
name=<value>przy użyciu dostępu przez indeksatorcountry=<value>przy użyciu dostępu przez indeksator
Użyj postaci możliwej do wypisania: gdy odczytujesz wartość słownika jako Any, przed wypisaniem wymuś jej rozpakowanie.
Dla danych wejściowych Alice / UK / 30 wynikiem jest:
3
name=Alice
country=UKSpróbuj swoich sił
let name = readLine()!
let country = readLine()!
let age = Int(readLine()!)!
// TODO: utwórz [String: Any] o nazwie person, wypisz count, name, country
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