0Pricing
Scala for Backend Engineering & Functional Programming · Lekcja

Destrukturyzacja krotek

Wyodrębni Pan/Pani wartości z powrotem.

Destrukturyzacja krotek to bezpłatna lekcja Scala for Backend Engineering & Functional Programming na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Scala for Backend Engineering & Functional Programming, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Scala for Backend Engineering & Functional Programming zawiera 4 lekcji w sumie.

Pobieranie wartości

Utworzenie krotki to dopiero połowa zadania. Aby użyć zawartych w niej wartości, trzeba je najpierw pobrać.

Scala oferuje dwa główne sposoby: akcesory numerowane i destrukturyzację za pomocą wzorca. Ta lekcja omawia oba.

Dostęp według pozycji

Każdy element krotki ma pozycję, do której można uzyskać dostęp za pomocą ._1, ._2 i kolejnych akcesorów.

Pamiętaj, że numerowanie zaczyna się od jedynki, a nie od zera. Dlatego ._1 oznacza pierwszy element.

val person = ("Alice", 30)
println(person._1)
println(person._2)

Używanie akcesorów w kodzie

Akcesory pozycyjne są wygodne, gdy potrzebujesz tylko jednego elementu.

W tym przykładzie odczytujemy wiek z pary i zwiększamy go o jeden. Akcesory zwracają typ pierwotnego elementu, więc można od razu wykonywać działania matematyczne.

val record = ("Bob", 42)
val nextYear = record._2 + 1
println(nextYear)

Destrukturyzacja za pomocą val

Odczytywanie ._1 i ._2 może utrudniać zrozumienie kodu. Destrukturyzacja pozwala od razu nadać nazwy poszczególnym elementom.

Ten wzorzec val wiąże name i age w jednej linii.

val (name, age) = ("Cara", 25)
println(name)
println(age)

Dlaczego destrukturyzacja pomaga

Zmienne o nazwach są znacznie czytelniejsze niż pozycje oznaczone numerami.

W porównaniu z person._2 zapis z destrukturyzacją wyraźnie pokazuje intencję i pozwala uniknąć pomyłek o jeden element.

val (city, population) = ("Lyon", 500000)
println(s"$city has $population people")

Destrukturyzacja trzech elementów

Destrukturyzacja działa dla krotek o dowolnym rozmiarze, nie tylko dla par.

W tym przykładzie krotka trzylementowa zostaje rozpakowana do trzech nazwanych zmiennych w jednym wyrażeniu.

val (id, label, active) = (7, "task", true)
println(id)
println(label)
println(active)

Pomijanie za pomocą podkreślenia

Czasami potrzebujesz tylko niektórych wartości. Użyj podkreślenia _, aby pominąć daną pozycję.

W tym przykładzie zachowujemy tylko imię, całkowicie pomijając wiek.

val (name, _) = ("Dana", 40)
println(name)

Destrukturyzacja wyników funkcji

Funkcje zwracające krotki naturalnie współpracują z destrukturyzacją.

Możesz nadać obu zwracanym wartościom nazwy już w miejscu wywołania funkcji, dzięki czemu wynik sam wyjaśnia swoje znaczenie.

def minMax(a: Int, b: Int) = (a min b, a max b)
val (low, high) = minMax(8, 3)
println(low)
println(high)

Zamiana elementów pary

Krotka dwuelementowa ma wbudowaną metodę swap, która zamienia jej elementy miejscami.

Zwraca ona nową parę z odwróconą kolejnością, co czasami bywa przydatne.

val pair = ("a", 1)
println(pair.swap)

Destrukturyzacja w pętli for

Podczas iterowania po kolekcji par można przeprowadzić destrukturyzację w nagłówku pętli.

W każdej iteracji para jest automatycznie rozpakowywana do key i value.

val pairs = List(("a", 1), ("b", 2))
for ((key, value) <- pairs) println(s"$key=$value")

Typy zostają zachowane

Destrukturyzacja nie usuwa informacji o typach. Każda nazwana zmienna zachowuje dokładny typ swojej pozycji.

Dlatego w val (n, age) = ("Eve", 33) zmienna n ma typ String, a age ma typ Int i można ich bezpiecznie używać.

val (n, age) = ("Eve", 33)
println(n.length)
println(age * 2)

Szybkie sprawdzenie

Sprawdź, czego nauczyłeś się o destrukturyzacji krotek.

Podsumowanie

Wartości krotki można pobierać za pomocą akcesorów pozycyjnych, takich jak ._1 (numerowanie od jedynki), lub — w czytelniejszy sposób — za pomocą destrukturyzacji, na przykład val (a, b) = pair.

Podkreślenie pomija niepotrzebne pozycje, destrukturyzacja działa w pętlach for, a typy są zawsze zachowywane. Następnie poznasz zakresy.

Często zadawane pytania

Czy lekcja „Destrukturyzacja krotek” jest bezpłatna?

Tak — pełny tekst „Destrukturyzacja krotek” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Scala for Backend Engineering & Functional Programming, przejdź na CoddyKit PRO. Kurs Scala for Backend Engineering & Functional Programming zawiera 4 lekcji w sumie.

Co nauczysz się w „Destrukturyzacja krotek”?

Wyodrębni Pan/Pani wartości z powrotem. Ćwiczysz Scala for Backend Engineering & Functional Programming z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Scala for Backend Engineering & Functional Programming?

Nie wymagamy żadnego doświadczenia. Scala for Backend Engineering & Functional Programming w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.

Ile czasu zajmuje lekcja „Destrukturyzacja krotek”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Scala for Backend Engineering & Functional Programming?

Tak. Każda lekcja Scala for Backend Engineering & Functional Programming zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Tworzenie krotek
  2. Destrukturyzacja krotek
  3. Budowanie zakresów
  4. Zakresy w pętlach
← Powrót do Scala for Backend Engineering & Functional Programming