Indeksowanie i iterowanie
Uzyska Pan/Pani dostęp do elementów i przeiteruje po nich.
Indeksowanie i iterowanie to bezpłatna lekcja Learn Rust Coding 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 Learn Rust Coding, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Learn Rust Coding zawiera 4 lekcji w sumie.
Odczyt przez indeks
Każdy element wektora ma numer pozycji nazywany indeksem. Indeksy zaczynają się od 0, więc pierwszy element ma indeks 0.
Odczytaj element za pomocą nawiasów kwadratowych, na przykład v[0] oznacza pierwszą wartość.
fn main() {
let v = vec![100, 200, 300];
println!("first = {}", v[0]);
println!("third = {}", v[2]);
}Panika poza zakresem
Odwołanie przez indeks wykraczający poza koniec wektora powoduje panikę i zatrzymuje program. Dla wektora o długości 3 jedyne prawidłowe indeksy to 0, 1 i 2.
Odwołanie do v[5] w tym przypadku spowodowałoby awarię, dlatego zawsze upewnij się, że indeks mieści się w zakresie.
Bezpieczny dostęp za pomocą get
Metoda get zwraca Option zamiast powodować panikę. Otrzymasz Some(value), jeśli indeks istnieje, albo None, jeśli jest poza zakresem.
Dzięki temu możesz obsłużyć brakujący element w bezpieczny sposób.
fn main() {
let v = vec![1, 2, 3];
match v.get(5) {
Some(x) => println!("got {}", x),
None => println!("no such index"),
}
}Liczba elementów
Metoda len zwraca liczbę elementów. Ostatni prawidłowy indeks zawsze wynosi len - 1.
Znajomość długości pomaga bezpiecznie wykonywać iterację lub sprawdzać zakres przed użyciem indeksu.
fn main() {
let v = vec![5, 6, 7, 8];
println!("length = {}", v.len());
println!("last = {}", v[v.len() - 1]);
}Iteracja po wartościach
Najczytelniejszym sposobem odwiedzenia każdego elementu jest pętla for wykonująca iterację po referencji do wektora. Użycie &v pożycza wektor, dzięki czemu pozostaje on później dostępny.
W każdej iteracji n jest wiązane z referencją do jednego elementu.
fn main() {
let v = vec![2, 4, 6];
for n in &v {
println!("value: {}", n);
}
}Iteracja z indeksem
Gdy potrzebujesz również pozycji, wywołaj iter().enumerate(). W każdej iteracji zwraca ono pary (index, value).
Jest to idealne rozwiązanie przy numerowanym wyjściu lub regułach zależnych od pozycji.
fn main() {
let v = vec!["a", "b", "c"];
for (i, item) in v.iter().enumerate() {
println!("{}: {}", i, item);
}
}Modyfikowanie każdego elementu
Aby modyfikować wartości w miejscu, wykonuj iterację po &mut v, a wektor musi być zadeklarowany jako mut. Każde n jest zmienną referencyjną, dlatego aby przypisać wartość, usuwasz referencję za pomocą *.
Tutaj każdy element jest podwajany.
fn main() {
let mut v = vec![1, 2, 3];
for n in &mut v {
*n *= 2;
}
println!("{:?}", v);
}Sumowanie wektora
Iteratory ułatwiają obliczenia. Metoda iter().sum() dodaje do siebie wszystkie elementy.
Rust musi znać typ wyniku, dlatego określamy typ sumy jako i32.
fn main() {
let v = vec![10, 20, 30];
let total: i32 = v.iter().sum();
println!("sum = {}", total);
}Pierwszy i ostatni element
Metody first() i last() zwracają referencje typu Option do pierwszego i ostatniego elementu wektora. Zwracają None, gdy wektor jest pusty.
Ich użycie pozwala uniknąć ręcznego obliczania indeksów i awarii z powodu wyjścia poza zakres.
fn main() {
let v = vec![7, 8, 9];
println!("{:?}", v.first());
println!("{:?}", v.last());
}Wyszukiwanie za pomocą contains
Aby sprawdzić, czy wartość znajduje się w wektorze, użyj contains. Metoda przyjmuje referencję do wartości i zwraca wartość bool.
Przeszukuje wektor i jest szybkim sposobem sprawdzenia przynależności elementu.
fn main() {
let v = vec![3, 6, 9];
println!("has 6? {}", v.contains(&6));
println!("has 5? {}", v.contains(&5));
}Wycinanie zakresu
Wycinek pożycza część wektora za pomocą zakresu, na przykład &v[1..3]. Początek jest włączony, a koniec wyłączony.
Wycinki pozwalają pracować z fragmentem elementów bez ich kopiowania.
fn main() {
let v = vec![10, 20, 30, 40];
let middle = &v[1..3];
println!("{:?}", middle);
}Szybkie sprawdzenie
Sprawdź swoją wiedzę na temat indeksowania i iteracji.
Podsumowanie
Odczytywałeś elementy według indeksu, uzyskiwałeś do nich bezpieczny dostęp za pomocą get i wykonywałeś iterację za pomocą for, enumerate oraz &mut.
Używałeś również sum, first, last, contains i wycinków. Następnie dowiesz się, jak zwiększać i zmniejszać wektory.
Często zadawane pytania
Czy lekcja „Indeksowanie i iterowanie” jest bezpłatna?
Tak — pełny tekst „Indeksowanie i iterowanie” 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 Learn Rust Coding, przejdź na CoddyKit PRO. Kurs Learn Rust Coding zawiera 4 lekcji w sumie.
Co nauczysz się w „Indeksowanie i iterowanie”?
Uzyska Pan/Pani dostęp do elementów i przeiteruje po nich. Ćwiczysz Learn Rust Coding 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ąć Learn Rust Coding?
Nie wymagamy żadnego doświadczenia. Learn Rust Coding 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 „Indeksowanie i iterowanie”?
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 Learn Rust Coding?
Tak. Każda lekcja Learn Rust Coding 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
- Tworzenie i wypełnianie wektorów
- Indeksowanie i iterowanie
- Powiększanie i zmniejszanie
- Wektory struktur