Dostęp do elementów wektora
Część sekcji Logika i przepływ programu ścieżki Rust w Coddy. Lekcja 10 z 66.
Gdy masz już wektor zawierający elementy, musisz uzyskać dostęp do poszczególnych wartości. Rust oferuje dwa różne sposoby pobierania elementów z wektora, z których każdy wiąże się z innymi kompromisami między wygodą a bezpieczeństwem.
Pierwsza metoda używa składni indeksowania z nawiasami kwadratowymi, podobnie jak w przypadku tablic:
let numbers = vec![10, 20, 30, 40];
let first = numbers[0]; // pobiera 10
let third = numbers[2]; // pobiera 30Chociaż ta składnia jest znajoma i zwięzła, wiąże się z nią poważne ryzyko: jeśli spróbujesz uzyskać dostęp do indeksu, który nie istnieje, program wpadnie w panikę i ulegnie awarii:
let numbers = vec![10, 20, 30];
let invalid = numbers[5]; // To spowoduje panikę!Druga metoda używa metody .get(), która zapewnia bezpieczny dostęp:
let numbers = vec![10, 20, 30, 40];
let first = numbers.get(0); // zwraca Some(10)
let invalid = numbers.get(5); // zwraca NoneMetoda .get() zwraca Option — albo Some(value), jeśli indeks istnieje, albo None, jeśli nie istnieje. Zmusza cię to do obsłużenia możliwości, że element może nie istnieć, co zapobiega awariom i sprawia, że twój kod jest bardziej odporny.
Wyzwanie
ŁatwyNapisz funkcję get_element_at, która przyjmuje wektor numbers i indeks idx, a następnie zwraca element o tym indeksie, korzystając z bezpiecznego dostępu.
Użyj metody .get(), aby bezpiecznie uzyskać dostęp do elementu. Jeśli indeks istnieje, zwróć wartość. Jeśli indeks nie istnieje, zwróć -1 jako wartość domyślną.
Parametry:
numbers(Vec<i32>): Wektor, do którego uzyskujesz dostępidx(i32): Indeks elementu do pobrania
Wartość zwracana: Element o podanym indeksie lub -1, jeśli indeks nie istnieje (i32)
Spróbuj swoich sił
fn get_element_at(numbers: Vec<i32>, idx: i32) -> i32 {
// Napisz kod tutaj
}
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 kodPoćwicz samodzielnie: Kompilator Rust online