Riepilogo: funzione di divisione sicura
Fa parte della sezione Logica e flusso del percorso Rust di Coddy. Lezione 48 di 66.
Sfida
FacileRiceverai due input. Il primo input è un numero che rappresenta il dividendo e il secondo input è un numero che rappresenta il divisore. Crea una funzione safe_divide che accetta due parametri f64 e restituisce un Result<f64, &'static str>. La funzione dovrebbe restituire Err("Cannot divide by zero") quando il divisore è zero e Ok con il risultato della divisione in caso contrario. Usa un'espressione match per gestire il risultato e stampare l'output appropriato.
Requisiti:
- Leggi il primo input (dividendo) e rimuovi gli spazi bianchi
- Analizza il primo input come
f64 - Leggi il secondo input (divisore) e rimuovi gli spazi bianchi
- Analizza il secondo input come
f64 - Crea una funzione
safe_divideche accetta due parametrif64e restituisceResult<f64, &'static str> - All'interno della funzione, controlla se il divisore è
0.0:- Se sì, restituisci
Err("Cannot divide by zero") - Se no, restituisci
Ok(dividend / divisor)
- Se sì, restituisci
- Chiama la funzione con i due numeri analizzati
- Usa un'espressione
matchper gestire ilResult - Nel ramo
Ok(value), stampa:Division result: [value] - Nel ramo
Err(error), stampa:Error: [error]
Input:
- Prima riga: un numero che rappresenta il dividendo (ad es.,
20.0) - Seconda riga: un numero che rappresenta il divisore (ad es.,
4.0)
Output:
- Se la divisione ha esito positivo:
Division result: [result] - Se la divisione è per zero:
Error: Cannot divide by zero
Provalo tu
use std::io;
// TODO: Crea aquí la función safe_divide
// fn safe_divide(dividend: f64, divisor: f64) -> Result<f64, &'static str> {
// Tu código aquí
// }
fn main() {
// Lee la primera entrada (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");
// Lee la segunda entrada (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: Llama a safe_divide y usa match para manejar el Result
// Imprime la salida adecuada según el resultado
}Tutte le lezioni di Logica e flusso
1Flusso di controllo avanzato
L'espressione 'match'Corrispondenza di più valoriCorrispondenza di intervalliL'espressione 'if let'Cicli come espressioniRipasso - Parser di comandi semplice4Raggruppare i dati con le struct
Che cos'è una struct?Panoramica sulle structAccedere ai campi delle structStruct mutabiliStruct come parametri di funzioneStruct tuplaRiepilogo - Creare una struct Book7Gestire gli errori con «Result»
Che cos’è «Result»?Usare «match» con «Result»is_ok() e is_err()Scorciatoie: unwrap ed expectL’operatore punto interrogativo «?»Convertire stringhe in numeriRiepilogo: funzione di divisione sicura2Introduzione ai vettori
Che cos'è un vettore?Creare un vettoreAggiungere elementi con pushAccedere agli elementi di un vettoreIterare su un vettoreIterazione mutabileRimuovere elementiRiepilogo - Tracker dei punteggi di base5Coppie chiave-valore con mappe hash
Che cos'è una mappa hash?Creare una mappa hashInserire coppie chiave-valoreAccedere ai valoriScorrere una mappa hashAggiornare un valoreRimuovere una coppiaRiepilogo - Contatore di parole8Progetto: inventario semplice degli articoli
Configurazione del progettoAggiungere un articoloControllare le scorteVendere un articoloMettere tutto insieme3Lista di attività da riga di comando
Configurazione del progettoAggiungere un'attivitàVisualizzare tutte le attivitàRimuovere un'attivitàCodice finaleEsercitati da solo: Compilatore Rust online