回顾:安全的除法函数
本课属于 Coddy Rust 学习旅程的“逻辑与流程”单元。第 48 课,共 66 课。
挑战
简单你会收到两个输入。第一个输入是表示被除数的数字,第二个输入是表示除数的数字。创建一个函数 safe_divide,它接收两个 f64 参数,并返回 Result<f64, &'static str>。当除数为零时,函数应返回 Err("Cannot divide by zero");否则,返回包含除法结果的 Ok。使用 match 表达式处理结果,并打印相应的输出。
要求:
- 读取第一个输入(被除数)并去除空白字符
- 将第一个输入解析为
f64 - 读取第二个输入(除数)并去除空白字符
- 将第二个输入解析为
f64 - 创建一个函数
safe_divide,它接收两个f64参数,并返回Result<f64, &'static str> - 在函数内部,检查除数是否为
0.0:- 如果是,返回
Err("Cannot divide by zero") - 如果不是,返回
Ok(dividend / divisor)
- 如果是,返回
- 使用解析后的两个数字调用该函数
- 使用
match表达式处理Result - 在
Ok(value)分支中,打印:Division result: [value] - 在
Err(error)分支中,打印:Error: [error]
输入:
- 第一行:表示被除数的数字(例如,
20.0) - 第二行:表示除数的数字(例如,
4.0)
输出:
- 如果除法成功:
Division result: [result] - 如果除数为零:
Error: Cannot divide by zero
亲手试试
use std::io;
// TODO:在这里创建 safe_divide 函数
// fn safe_divide(dividend: f64, divisor: f64) -> Result<f64, &'static str> {
// 在这里编写你的代码
// }
fn main() {
// 读取第一个输入(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");
// 读取第二个输入(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:调用 safe_divide,并使用 match 处理 Result
// 根据结果打印相应的输出
}逻辑与流程中的所有课
7使用 Result 处理错误
什么是 Result?在 Result 中使用 matchis_ok() 和 is_err()快捷方法:unwrap 和 expect问号运算符“?”将字符串解析为数字回顾:安全的除法函数自己练习: Rust 在线编译器