Menu
Coddy logo textTech

Iterowanie z możliwością modyfikacji

Część sekcji Logika i przepływ programu ścieżki Rust w Coddy. Lekcja 12 z 66.

Czasami musisz zrobić więcej niż tylko odczytywać elementy wektora — musisz je modyfikować. W poprzedniej lekcji pokazano, jak iterować i odczytywać wartości, a w tej lekcji dowiesz się, jak zmieniać elementy podczas iteracji za pomocą referencji mutowalnych.

Aby modyfikować elementy podczas iterowania, musisz użyć &mut zamiast & w pętli for:

let mut numbers = vec![1, 2, 3, 4];

for number in &mut numbers {
    *number = *number * 2;
}

&mut numbers tworzy mutowalną referencję do wektora, a każda iteracja daje ci mutowalną referencję do pojedynczego elementu. Operator * (nazywany operatorem dereferencji) służy do uzyskiwania dostępu do rzeczywistej wartości, na którą wskazuje referencja, i jej modyfikowania.

Ten wzorzec jest niezwykle przydatny do przekształcania danych w miejscu. Zamiast tworzyć nowy wektor ze zmodyfikowanymi wartościami, możesz efektywnie zaktualizować istniejący. Wektor musi być zadeklarowany jako mut, aby to zadziałało, ponieważ zmieniasz jego zawartość.

Po wykonaniu powyższej pętli numbers zawierałaby [2, 4, 6, 8] — każdą pierwotną wartość podwojoną na miejscu.

challenge icon

Wyzwanie

Łatwy
Napisz funkcję add_ten_to_all, która przyjmuje mutowalny wektor numbers, dodaje 10 do każdego elementu bezpośrednio, a następnie zwraca zmodyfikowany wektor.

Użyj mutowalnej iteracji z &mut, aby bezpośrednio modyfikować każdy element. Pamiętaj, aby użyć operatora dereferencji *, by uzyskać dostęp do rzeczywistych wartości i je modyfikować.

Parametry:

  • numbers (Vec<i32>): mutowalny wektor liczb całkowitych do zmodyfikowania

Zwraca: zmodyfikowany wektor, w którym do każdego elementu dodano 10 (Vec<i32>)

Spróbuj swoich sił

fn add_ten_to_all(mut numbers: Vec<i32>) -> Vec<i32> {
    // Wpisz tutaj kod
}
quiz iconSprawdź się

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

Poćwicz samodzielnie: Kompilator Rust online