Itération mutable
Fait partie de la section Logique & Flux du Journey Rust de Coddy. Leçon 12 sur 66.
Parfois, vous devez faire plus que simplement lire les éléments d’un vecteur : vous devez les modifier. Alors que la leçon précédente montrait comment parcourir un vecteur et lire ses valeurs, cette leçon vous apprend à modifier les éléments pendant le parcours à l’aide de références mutables.
Pour modifier des éléments lors de l’itération, vous devez utiliser &mut au lieu de & dans votre boucle for :
let mut numbers = vec![1, 2, 3, 4];
for number in &mut numbers {
*number = *number * 2;
}&mut numbers crée une référence mutable vers le vecteur, et chaque itération vous donne une référence mutable vers un élément individuel. L’opérateur * (appelé opérateur de déréférencement) est utilisé pour accéder à la valeur réelle vers laquelle pointe la référence et la modifier.
Ce modèle est extrêmement utile pour transformer des données sur place. Au lieu de créer un nouveau vecteur avec des valeurs modifiées, tu peux mettre à jour efficacement celui qui existe déjà. Le vecteur doit être déclaré comme mut pour que cela fonctionne, puisque tu modifies son contenu.
Après la boucle ci-dessus, numbers contiendrait [2, 4, 6, 8] — chaque valeur d’origine étant doublée sur place.
Défi
FacileÉcrivez une fonction add_ten_to_all qui prend un vecteur mutable numbers, ajoute 10 à chaque élément directement dans le vecteur, puis renvoie le vecteur modifié.
Utilisez une itération mutable avec &mut pour modifier directement chaque élément. N'oubliez pas d'utiliser l'opérateur de déréférencement * pour accéder aux valeurs réelles et les modifier.
Paramètres :
numbers(Vec<i32>) : un vecteur mutable d'entiers à modifier
Renvoie : le vecteur modifié avec 10 ajouté à chaque élément (Vec<i32>)
Essayez vous-même
fn add_ten_to_all(mut numbers: Vec<i32>) -> Vec<i32> {
// Écrivez le code ici
}Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Logique & Flux
1Structures de contrôle avancées
L'expression 'match'Filtrage de plusieurs valeursFiltrage d'intervallesL'expression 'if let'Les boucles en tant qu'expressionsRécapitulatif - Analyseur de commandes simple4Regrouper des données avec les structures
Qu'est-ce qu'une structure ?Aperçu des structuresAccéder aux champs d'une structureStructures mutablesLes structures comme paramètres de fonctionStructures tupleRécapitulatif - Créer une structure Book2Introduction aux vecteurs
Qu'est-ce qu'un vecteur ?Créer un vecteurAjouter des éléments avec pushAccéder aux éléments d'un vecteurItérer sur un vecteurItération mutableSupprimer des élémentsRécapitulatif - Suivi de score basique5Paires clé-valeur avec les Hash Maps
Qu'est-ce qu'une Hash Map ?Créer une Hash MapInsérer des paires clé-valeurAccéder aux valeursParcourir une Hash MapMettre à jour une valeurSupprimer une paireRécapitulatif - Compteur de mots8Projet : Inventaire d'articles simple
Configuration du projetAjouter un articleVérifier le stockVendre un articleAssembler le tout3Liste de tâches en ligne de commande
Configuration du projetAjouter une tâcheAfficher toutes les tâchesSupprimer une tâcheCode finalEntraînez-vous par vous-même : Compilateur Rust en ligne