Accéder aux éléments d'un vecteur
Fait partie de la section Logic & Flow du Journey Rust de Coddy — leçon 10 sur 66.
Une fois que vous avez un vecteur contenant des éléments, vous devrez accéder aux valeurs individuelles. Rust propose deux approches différentes pour obtenir des éléments d'un vecteur, chacune ayant ses propres compromis entre commodité et sécurité.
La première méthode utilise la syntaxe d'indexation avec des crochets, similaire aux tableaux :
let numbers = vec![10, 20, 30, 40];
let first = numbers[0]; // récupère 10
let third = numbers[2]; // récupère 30Bien que cette syntaxe soit familière et concise, elle présente un risque important : si vous essayez d'accéder à un index qui n'existe pas, votre programme va paniquer et s'arrêter brutalement :
let numbers = vec![10, 20, 30];
let invalid = numbers[5]; // Cela va paniquer !La deuxième méthode utilise la méthode .get(), qui fournit un accès sécurisé :
let numbers = vec![10, 20, 30, 40];
let first = numbers.get(0); // retourne Some(10)
let invalid = numbers.get(5); // retourne NoneLa méthode .get() retourne une Option - soit Some(value) si l'index existe, soit None s'il n'existe pas. Cela vous oblige à gérer la possibilité que l'élément n'existe pas, évitant ainsi les plantages et rendant votre code plus robuste.
Défi
FacileÉcrivez une fonction get_element_at qui prend un vecteur numbers et un index idx, et retourne l'élément à cet index en utilisant un accès sécurisé.
Utilisez la méthode .get() pour accéder à l'élément en toute sécurité. Si l'index existe, retournez la valeur. Si l'index n'existe pas, retournez -1 comme valeur par défaut.
Paramètres :
numbers(Vec<i32>) : Le vecteur auquel accéderidx(i32) : L'index à récupérer
Retourne : L'élément à l'index donné, ou -1 si l'index n'existe pas (i32)
Aide-mémoire
Rust propose deux méthodes pour accéder aux éléments d'un vecteur :
La syntaxe d'indexation avec des crochets :
let numbers = vec![10, 20, 30, 40];
let first = numbers[0]; // récupère 10
let third = numbers[2]; // récupère 30Cette méthode provoquera un panic si l'index n'existe pas :
let invalid = numbers[5]; // Cela provoquera un panic !La méthode .get() pour un accès sécurisé :
let numbers = vec![10, 20, 30, 40];
let first = numbers.get(0); // retourne Some(10)
let invalid = numbers.get(5); // retourne NoneLa méthode .get() retourne un type Option - soit Some(value) si l'index existe, soit None s'il n'existe pas. Cela évite les plantages et nécessite une gestion explicite des éléments manquants.
Essayez vous-même
fn get_element_at(numbers: Vec<i32>, idx: i32) -> 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