Zusammenfassung – Sichere Divisionsfunktion
Teil des Abschnitts Logic & Flow der Rust-Journey von Coddy — Lektion 48 von 66.
Aufgabe
EinfachSie erhalten zwei Eingaben. Die erste Eingabe ist eine Zahl, die den Dividenden darstellt, und die zweite Eingabe ist eine Zahl, die den Divisor darstellt. Erstellen Sie eine Funktion safe_divide, die zwei f64-Parameter entgegennimmt und ein Result<f64, &'static str> zurückgibt. Die Funktion sollte Err("Cannot divide by zero") zurückgeben, wenn der Divisor Null ist, andernfalls Ok mit dem Divisionsergebnis. Verwenden Sie einen match-Ausdruck, um das Ergebnis zu verarbeiten und die entsprechende Ausgabe auszugeben.
Anforderungen:
- Lesen Sie die erste Eingabe (Dividende) ein und entfernen Sie Leerzeichen
- Parsen Sie die erste Eingabe in
f64 - Lesen Sie die zweite Eingabe (Divisor) ein und entfernen Sie Leerzeichen
- Parsen Sie die zweite Eingabe in
f64 - Erstellen Sie eine Funktion
safe_divide, die zweif64-Parameter entgegennimmt undResult<f64, &'static str>zurückgibt - Prüfen Sie innerhalb der Funktion, ob der Divisor
0.0ist:- Falls ja, geben Sie
Err("Cannot divide by zero")zurück - Falls nein, geben Sie
Ok(dividend / divisor)zurück
- Falls ja, geben Sie
- Rufen Sie die Funktion mit den beiden geparsten Zahlen auf
- Verwenden Sie einen
match-Ausdruck, um dasResultzu verarbeiten - Geben Sie im
Ok(value)-Zweig Folgendes aus:Division result: [value] - Geben Sie im
Err(error)-Zweig 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 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 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 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