将字符串解析为数字
本课属于 Coddy Rust 学习旅程的“逻辑与流程”单元。第 47 课,共 66 课。
Result 最常见的实际应用之一是将字符串转换为数字。在 Rust 中,这可以通过 .parse() 方法完成,这也很好地说明了为什么需要 Result,因为解析可能会失败。
.parse() 方法会尝试将字符串转换为数字,但并非每个字符串都表示有效的数字。例如,"42" 可以解析为数字 42,但 "hello" 无法转换为任何数字:
let valid_number = "42";
let invalid_number = "hello";
let result1: Result = valid_number.parse();
let result2: Result = invalid_number.parse();解析成功时,.parse() 会返回包含转换后值的 Ok(number)。解析失败时,它会返回包含解析失败原因信息的 Err(error)。这会要求你显式处理这两种可能,避免程序因无效输入而崩溃。
你可以使用学过的任何 Result 处理方式来处理解析结果:使用 match 进行显式处理,如果你确定它会成功,则使用 unwrap(),或者使用 ? 运算符来传播错误。
挑战
简单编写一个函数 parse_to_integer,它接受一个字符串 input,并返回解析后的整数值。如果字符串无法解析为有效整数,则返回 0 作为默认值。
使用 .parse() 方法将字符串转换为 i32,并妥善处理 Result,以提供安全的返回值。
参数:
input(String):要解析为整数的字符串
返回值:如果解析成功,则返回解析后的整数;如果解析失败,则返回 0(i32)
亲手试试
fn parse_to_integer(input: String) -> i32 {
// 在这里编写代码
}
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
逻辑与流程中的所有课
7使用 Result 处理错误
什么是 Result?在 Result 中使用 matchis_ok() 和 is_err()快捷方法:unwrap 和 expect问号运算符“?”将字符串解析为数字回顾:安全的除法函数自己练习: Rust 在线编译器