Metoda enumerate
Część sekcji Podstawy ścieżki Swift w Coddy. Lekcja 70 z 86.
Czasami podczas iterowania po tablicy musisz znać nie tylko element, ale także jego pozycję. Możesz ręcznie śledzić indeks za pomocą zmiennej licznika, ale Swift oferuje prostsze rozwiązanie: metodę enumerated().
Gdy wywołasz enumerated() na tablicy, zwróci ona sekwencję krotek, z których każda zawiera indeks i element:
let colors = ["Red", "Green", "Blue"]
for (index, color) in colors.enumerated() {
print("\(index): \(color)")
}
// 0: Red
// 1: Green
// 2: BlueZwróć uwagę, jak bezpośrednio rozpakowujemy każdą krotkę w pętli, używając (index, color). Dzięki temu mamy dostęp do obu wartości bez dodatkowego kodu.
Jest to szczególnie przydatne, gdy musisz wyświetlać listy numerowane lub wykonywać operacje zależne od pozycji elementu:
let tasks = ["Wake up", "Exercise", "Eat breakfast"]
for (index, task) in tasks.enumerated() {
print("Task \(index + 1): \(task)")
}
// Zadanie 1: Obudź się
// Zadanie 2: Ćwicz
// Zadanie 3: Zjedz śniadanieMetoda enumerated() sprawia, że kod jest przejrzysty i czytelny, w przeciwieństwie do ręcznego zarządzania osobną zmienną licznika.
Wyzwanie
ŁatwyNapisz funkcję formatWithPositions, która przyjmuje items i zwraca sformatowany ciąg znaków, pokazujący każdy element wraz z jego numerem pozycji.
Użyj metody enumerated(), aby iterować po tablicy i utworzyć ciąg znaków, w którym każdy element jest poprzedzony numerem pozycji liczonej od 1.
Logika:
- Iteruj po tablicy, używając
enumerated() - Dla każdego elementu utwórz ciąg znaków w formacie
"position. item"(stosując numerację od 1) - Połącz wszystkie sformatowane ciągi znakiem nowej linii (
\n)
Parametry:
items([String]): Tablica ciągów znaków do sformatowania
Zwraca: Pojedynczy ciąg znaków, w którym każdy element znajduje się w osobnym wierszu i jest poprzedzony swoim numerem pozycji (String). Format: "1. item1\n2. item2\n3. item3"
Przykład: Jeśli items ma wartość ["Apple", "Banana", "Cherry"], funkcja powinna zwrócić:
"1. Apple\n2. Banana\n3. Cherry"Uwaga: Jeśli tablica jest pusta, zwróć pusty ciąg znaków "".
Spróbuj swoich sił
func formatWithPositions(items: [String]) -> String {
// Napisz kod tutaj
}
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Podstawy
4Operatory, część 1
Operatory arytmetyczneOperator moduloPrzypisanie złożonePodsumowanie — prosta matematykaOperatory porównania7Podstawowe wejście/wyjście
Funkcja printInterpolacja ciągów znakówWejście ReadLineKonwersja typówPowtórka – do 120Powtórka – prawda czy fałsz10Funkcje
Deklarowanie funkcjiParametry i argumentyWartości zwracaneEtykiety argumentówPowtórka – funkcja SigmaPowtórka – funkcja walidującaWartości domyślne13Iterowanie po sekwencjach
Iterowanie po elementachMetoda enumerateIterowanie po łańcuchach znaków, cz. 1Iterowanie po łańcuchach znaków, cz. 22Zmienne
let vs varAdnotacje typówLiczbyŁańcuch znakówWartość logicznaKonwencje nazewnictwaPodsumowanie – inicjalizacja zmiennych5Operatory, część 2
Operatory logiczne, część 1Operatory logiczne, część 2Powtórka – prosta logikaOperatory logiczne, część 3Operator trójargumentowy8Kalkulator podziału rachunku
Wiadomość powitalnaPobieranie danych wejściowych11FizzBuzz z niespodzianką
Omówienie gryFunkcja FizzBuzz3Typy opcjonalne
Czym są typy opcjonalneRozpakowywanie za pomocą if letGuard letOperator nil-coalescingPodsumowanie — bezpieczne rozpakowywanie6Podejmowanie decyzji
Instrukcja ifIf - ElsePowtórka – prosty kalkulatorInstrukcja switchSwitch z zakresami9Pętle
Pętla for-inPętla whilePętla repeat-whileInstrukcja breakInstrukcja continuePowtórzenie – silniaZakresy w pętlachPętla zagnieżdżonaPowtórzenie – dynamiczne dane wejściowePoćwicz samodzielnie: Edytor online Swift