Itération mutable
Fait partie de la section Logic & Flow 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 itérer et lire des valeurs, cette leçon vous apprend comment modifier les éléments pendant l'itération en utilisant des 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;
}Le &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é l'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 incroyablement utile pour transformer des données sur place. Au lieu de créer un nouveau vecteur avec des valeurs modifiées, vous pouvez mettre à jour efficacement celui qui existe déjà. Le vecteur doit être déclaré comme mut pour que cela fonctionne, puisque vous modifiez son contenu.
Après la boucle ci-dessus, numbers contiendrait [2, 4, 6, 8] - chaque valeur d'origine doublée sur place.
Défi
FacileÉcrivez une fonction add_ten_to_all qui prend un vecteur mutable numbers et ajoute 10 à chaque élément sur place, puis retourne le vecteur modifié.
Utilisez l'itération mutable avec &mut pour modifier chaque élément directement. 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
Retourne : Le vecteur modifié avec 10 ajouté à chaque élément (Vec<i32>)
Aide-mémoire
Pour modifier les éléments d'un vecteur pendant l'itération, utilisez des références mutables avec &mut :
let mut numbers = vec![1, 2, 3, 4];
for number in &mut numbers {
*number = *number * 2;
}Points clés :
&mut numberscrée une référence mutable vers le vecteur- Chaque itération fournit une référence mutable vers un élément individuel
- L'opérateur
*(opérateur de déréférencement) accède à la valeur réelle et la modifie - Le vecteur doit être déclaré comme
mutpour permettre la modification
Ce modèle vous permet de transformer les données en place de manière efficace sans créer de nouveau vecteur.
Essayez vous-même
fn add_ten_to_all(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 Logic & Flow
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 final