Zusammenfassung – Sichere Divisionsfunktion
Teil des Abschnitts Logik & Kontrollfluss der Rust-Journey von Coddy. Lektion 48 von 66.
Aufgabe
EinfachDu erhältst zwei Eingaben. Die erste Eingabe ist eine Zahl, die den Dividenden darstellt, und die zweite Eingabe ist eine Zahl, die den Divisor darstellt. Erstelle eine Funktion safe_divide, die zwei f64-Parameter übernimmt und ein Result<f64, &'static str> zurückgibt. Die Funktion soll Err("Cannot divide by zero") zurückgeben, wenn der Divisor null ist, und andernfalls Ok mit dem Ergebnis der Division. Verwende einen match-Ausdruck, um das Ergebnis zu verarbeiten und die entsprechende Ausgabe auszugeben.
Anforderungen:
- Lies die erste Eingabe (Dividend) ein und entferne Leerzeichen
- Wandle die erste Eingabe in
f64um - Lies die zweite Eingabe (Divisor) ein und entferne Leerzeichen
- Wandle die zweite Eingabe in
f64um - Erstelle eine Funktion
safe_divide, die zweif64-Parameter übernimmt undResult<f64, &'static str>zurückgibt - Prüfe innerhalb der Funktion, ob der Divisor
0.0ist:- Wenn ja, gib
Err("Cannot divide by zero")zurück - Wenn nein, gib
Ok(dividend / divisor)zurück
- Wenn ja, gib
- Rufe die Funktion mit den beiden geparsten Zahlen auf
- Verwende einen
match-Ausdruck, um dasResultzu verarbeiten - Gib im
Ok(value)-Arm Folgendes aus:Division result: [value] - Gib im
Err(error)-Arm Folgendes aus:Error: [error]
Eingabe:
- Erste Zeile: Eine Zahl, die den Dividenden darstellt (z. B.
20.0) - Zweite Zeile: Eine Zahl, die den Divisor darstellt (z. B.
4.0)
Ausgabe:
- Wenn die Division erfolgreich ist:
Division result: [result] - Bei einer Division durch null:
Error: Cannot divide by zero
Probier es selbst
use std::io;
// TODO: Erstellen Sie hier die Funktion safe_divide
// fn safe_divide(dividend: f64, divisor: f64) -> Result<f64, &'static str> {
// Ihr Code hier
// }
fn main() {
// Erste Eingabe lesen (Dividend)
let mut dividend_input = String::new();
io::stdin().read_line(&mut dividend_input).expect("Failed to read line");
let dividend: f64 = dividend_input.trim().parse().expect("Invalid number");
// Zweite Eingabe lesen (Divisor)
let mut divisor_input = String::new();
io::stdin().read_line(&mut divisor_input).expect("Failed to read line");
let divisor: f64 = divisor_input.trim().parse().expect("Invalid number");
// TODO: Rufen Sie safe_divide auf und verwenden Sie match, um das Result zu verarbeiten
// Geben Sie die entsprechende Ausgabe basierend auf dem Ergebnis aus
}Alle Lektionen in Logik & Kontrollfluss
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 erstellen7Fehlerbehandlung mit 'Result'
Was ist ein 'Result'?'match' mit 'Result' verwendenis_ok() und is_err()Abkürzungen: unwrap und expectDer Fragezeichen-Operator '?'Strings in Zahlen parsenZusammenfassung – Sichere Divisionsfunktion2Einfü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 CodeÜbe selbstständig: Online-Rust-Compiler