is_some() et is_none()
Fait partie de la section Logic & Flow du Journey Rust de Coddy — leçon 37 sur 66.
Parfois, vous devez vérifier si un Option contient une valeur sans réellement extraire cette valeur. Rust fournit deux méthodes pratiques pour cela : .is_some() et .is_none().
Les deux méthodes renvoient une valeur booléenne, ce qui les rend parfaites pour une utilisation dans des conditions if :
let maybe_score = Some(85);
if maybe_score.is_some() {
println!("We have a score!");
}
if maybe_score.is_none() {
println!("No score available");
}La méthode .is_some() renvoie true si l'Option contient une valeur Some, et false si elle est None. La méthode .is_none() fonctionne de la manière opposée - elle renvoie true pour None et false pour Some.
Défi
FacileVous recevrez un nombre en entrée. Créez une Option<i32> qui contient Some(number) si le nombre est positif, ou None si le nombre est nul ou négatif. Utilisez .is_some() et .is_none() pour vérifier l'Option et afficher le message approprié.
Exigences :
- Lire l'entrée et la convertir en
i32 - Créer une variable
Option<i32>:- Si le nombre est positif (supérieur à 0), assignez
Some(number) - Si le nombre est nul ou négatif, assignez
None
- Si le nombre est positif (supérieur à 0), assignez
- Utilisez
.is_some()pour vérifier si l'Optioncontient une valeur - Si
.is_some()retournetrue, affichez :Positive number detected - Utilisez
.is_none()pour vérifier si l'Optionest vide - Si
.is_none()retournetrue, affichez :No positive number
Entrée :
- Un seul entier (par exemple,
42,0, ou-5)
Sortie :
- Si le nombre est positif :
Positive number detected - Si le nombre est nul ou négatif :
No positive number
Aide-mémoire
Utilisez .is_some() pour vérifier si un Option contient une valeur :
let maybe_score = Some(85);
if maybe_score.is_some() {
println!("We have a score!");
}Utilisez .is_none() pour vérifier si un Option est vide :
if maybe_score.is_none() {
println!("No score available");
}Les deux méthodes renvoient des valeurs booléennes (true ou false).
Essayez vous-même
use std::io;
fn main() {
// Lire l'entrée
let mut input = String::new();
io::stdin().read_line(&mut input).expect("Failed to read line");
let number: i32 = input.trim().parse().expect("Invalid input");
// TODO: Écrivez votre code ci-dessous
// Créer un Option<i32> selon que le nombre est positif ou non
// Vérifier si l'Option est Some et afficher le message approprié
}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 final6Gérer l'absence avec 'Option'
Qu'est-ce qu'une 'Option' ?Utiliser 'match' avec 'Option'is_some() et is_none()Déballer une 'Option'La méthode expectFournir une valeur par défaut : unwrap_orRécapitulatif - Trouver un élément