【发布时间】:2019-10-23 13:11:22
【问题描述】:
我不明白 Option 枚举的用途。我读到 Rust 没有空值。 Option 枚举定义如下:
enum Option<T> {
Some(T),
None,
}
我阅读了它的实现并遇到了这个例子:
fn main() {
fn divide(numerator: f64, denominator: f64) -> Option<f64> {
if denominator == 0.0 {
None
} else {
Some(numerator / denominator)
}
}
// The return value of the function is an option
let result = divide(2.0, 3.0);
// Pattern match to retrieve the value
match result {
// The division was valid
Some(x) => println!("Result: {}", x),
// The division was invalid
None => println!("Cannot divide by 0"),
}
}
当他们也可以这样做时:
fn main() {
fn divide(numerator: f64, denominator: f64) -> String {
if denominator == 0.0 {
format!("Can't divide")
} else {
let x = numerator / denominator;
format!("{}", x)
}
}
let result = divide(2.0, 3.0);
println!("{}", result);
}
两个程序的输出:
0.6666666666666666
【问题讨论】:
-
我当然不想将我的数字格式化为字符串,这样我就可以解析它并将其转换回数字。那将是极其低效且丑陋的代码。原始代码是使用 Option 的一个很好的例子。