is_some() und is_none()
Teil des Abschnitts Logic & Flow der Rust-Journey von Coddy — Lektion 37 von 66.
Manchmal müssen Sie prüfen, ob ein Option einen Wert enthält, ohne diesen Wert tatsächlich zu extrahieren. Rust bietet hierfür zwei praktische Methoden an: .is_some() und .is_none().
Beide Methoden geben einen booleschen Wert zurück, was sie perfekt für die Verwendung in if-Bedingungen macht:
let maybe_score = Some(85);
if maybe_score.is_some() {
println!("We have a score!");
}
if maybe_score.is_none() {
println!("No score available");
}Die Methode .is_some() gibt true zurück, wenn das Option einen Some-Wert enthält, und false, wenn es None ist. Die Methode .is_none() funktioniert genau umgekehrt – sie gibt true für None und false für Some zurück.
Aufgabe
EinfachSie erhalten eine Zahl als Eingabe. Erstellen Sie ein Option<i32>, das Some(number) enthält, wenn die Zahl positiv ist, oder None, wenn die Zahl Null oder negativ ist. Verwenden Sie .is_some() und .is_none(), um das Option zu prüfen und die entsprechende Nachricht auszugeben.
Anforderungen:
- Lesen Sie die Eingabe ein und konvertieren Sie diese in
i32 - Erstellen Sie eine
Option<i32>Variable:- Wenn die Zahl positiv ist (größer als 0), weisen Sie
Some(number)zu - Wenn die Zahl Null oder negativ ist, weisen Sie
Nonezu
- Wenn die Zahl positiv ist (größer als 0), weisen Sie
- Verwenden Sie
.is_some(), um zu prüfen, ob dasOptioneinen Wert enthält - Wenn
.is_some()den Werttruezurückgibt, geben Sie aus:Positive number detected - Verwenden Sie
.is_none(), um zu prüfen, ob dasOptionleer ist - Wenn
.is_none()den Werttruezurückgibt, geben Sie aus:No positive number
Eingabe:
- Eine einzelne Ganzzahl (z. B.
42,0oder-5)
Ausgabe:
- Wenn die Zahl positiv ist:
Positive number detected - Wenn die Zahl Null oder negativ ist:
No positive number
Spickzettel
Verwenden Sie .is_some(), um zu prüfen, ob ein Option einen Wert enthält:
let maybe_score = Some(85);
if maybe_score.is_some() {
println!("We have a score!");
}Verwenden Sie .is_none(), um zu prüfen, ob ein Option leer ist:
if maybe_score.is_none() {
println!("No score available");
}Beide Methoden geben boolesche Werte zurück (true oder false).
Probier es selbst
use std::io;
fn main() {
// Eingabe lesen
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: Schreibe deinen Code unten
// Erstelle ein Option<i32> basierend darauf, ob die Zahl positiv ist
// Überprüfe, ob die Option Some ist und gib die entsprechende Nachricht aus
}Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logic & Flow
1Fortgeschrittener Kontrollfluss
Der 'match'-AusdruckAbgleichen mehrerer WerteBereiche abgleichenDer 'if let'-AusdruckSchleifen als AusdrückeRückblick – Einfacher Befehls-Parser4Daten gruppieren mit Structs
Was ist ein Struct?Übersicht über StructsZugriff auf Struct-FelderVeränderbare StructsStructs als FunktionsparameterTupel-StructsZusammenfassung – Ein Buch-Struct erstellen2Einführung in Vektoren
Was ist ein Vektor?Einen Vektor erstellenElemente mit push hinzufügenZugriff auf Vektor-ElementeÜber einen Vektor iterierenVeränderliche IterationElemente entfernenZusammenfassung – Einfacher Score-Tracker5Schlüssel-Wert-Paare mit Hash Maps
Was ist eine Hash Map?Erstellen einer Hash MapEinfügen von Schlüssel-Wert-PaarenZugreifen auf WerteIterieren über eine Hash MapAktualisieren eines WertesEntfernen eines PaaresZusammenfassung – Wortzähler8Projekt: Einfaches Artikelinventar
Projekt-SetupEinen Artikel hinzufügenLagerbestand prüfenEinen Artikel verkaufenAlles zusammenfügen11Abschluss-Herausforderungen
Wiederholung - Einzigartige ElementeWiederholung - Benutzerprofil-ValidatorWiederholung - Noten-Zusammenfassung3Kommandozeilen-To-Do-Liste
Projekt-SetupEine Aufgabe hinzufügenAlle Aufgaben anzeigenEine Aufgabe entfernenFinaler Code6Umgang mit fehlenden Werten mit 'Option'
Was ist ein 'Option'?'match' mit 'Option' verwendenis_some() und is_none()Ein 'Option' entpackenDie 'expect'-MethodeStandardwert bereitstellen: unwrap_orRückblick – Ein Element finden