Czym jest „Option”?
Część sekcji Logika i przepływ programu ścieżki Rust w Coddy. Lekcja 35 z 66.
W programowaniu często zdarzają się sytuacje, w których jakaś wartość może być obecna albo nie. Na przykład podczas wyszukiwania elementu na liście można go znaleźć, ale może się też okazać, że w ogóle nie istnieje. Tradycyjne języki programowania często używają specjalnych wartości, takich jak null lub -1, aby reprezentować „nic”, ale takie podejście może prowadzić do błędów i awarii.
Rust podchodzi do tego inaczej, używając typu wyliczeniowego Option<T>. Jest to wbudowany typ, który jawnie reprezentuje możliwość braku wartości. Zamiast zgadywać, czy wartość istnieje, Rust wymaga od Ciebie obsłużenia obu przypadków z góry.
Typ wyliczeniowy Option ma dokładnie dwa warianty:
Some(value) // Zawiera wartość
None // Nie zawiera wartościGdy funkcja może nie zwrócić wartości, zwraca Option. Jeśli jest wartość do zwrócenia, opakowuje ją w Some. Jeśli nie ma żadnej wartości, zwraca None.
W ten sposób potencjalny brak wartości jest jawnie uwzględniony w systemie typów, co zapobiega przypadkowemu użyciu wartości, która nie istnieje.
Widziałeś już działanie Option w metodzie .get() mapy haszującej — zwraca ona Some(&value), gdy klucz istnieje, lub None, gdy go nie ma. Ten wzorzec pojawia się w całym Rust, dzięki czemu Twój kod jest bezpieczniejszy i bardziej przewidywalny.
Spróbuj swoich sił
Ta lekcja nie zawiera wyzwania z kodem.
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
1Zaawansowane sterowanie przepływem
Wyrażenie „match”Dopasowywanie wielu wartościDopasowywanie zakresówWyrażenie „if let”Pętle jako wyrażeniaPodsumowanie — prosty parser poleceń4Grupowanie danych za pomocą struktur
Czym jest struktura?Przegląd strukturDostęp do pól strukturyModyfikowalne strukturyStruktury jako parametry funkcjiStruktury krotkowePodsumowanie — utwórz strukturę Book2Wprowadzenie do wektorów
Czym jest wektor?Tworzenie wektoraDodawanie elementów za pomocą pushDostęp do elementów wektoraIterowanie po wektorzeIterowanie z możliwością modyfikacjiUsuwanie elementówPodsumowanie — prosty licznik punktów5Pary klucz–wartość z mapami hashującymi
Czym jest mapa haszująca?Tworzenie mapy haszującejWstawianie par klucz–wartośćDostęp do wartościIterowanie po mapie haszującejAktualizowanie wartościUsuwanie paryPodsumowanie – licznik słów8Projekt: Prosty system inwentaryzacji
Konfiguracja projektuDodawanie produktuSprawdzanie stanu magazynowegoSprzedaż produktuŁączenie wszystkiego w całość3Lista zadań w wierszu poleceń
Konfiguracja projektuDodawanie zadaniaWyświetlanie wszystkich zadańUsuwanie zadaniaKońcowy kod6Obsługa braku wartości za pomocą „Option”
Czym jest „Option”?Używanie „match” z „Option”is_some() i is_none()Rozpakowywanie „Option”Metoda expectPodawanie wartości domyślnej: unwrap_orPodsumowanie – znajdowanie elementuPoćwicz samodzielnie: Kompilator Rust online