【发布时间】:2017-04-11 01:14:08
【问题描述】:
来自tutorial:
没有 else 的 if 总是以 () 作为值。
为什么 Rust 会施加这个限制并且不允许没有 else 的 if 返回其他值,如下所示:
let y = if x == 5 { 10 };
【问题讨论】:
标签: rust
来自tutorial:
没有 else 的 if 总是以 () 作为值。
为什么 Rust 会施加这个限制并且不允许没有 else 的 if 返回其他值,如下所示:
let y = if x == 5 { 10 };
【问题讨论】:
标签: rust
对于您的示例,正确的问题是:“如果 x 不是 5,y 的值是多少?”。这里会发生什么?
let x = 3;
let y = if x == 5 { 10 };
println!("{}", y); // what?!
您可能认为 if-without-else-expression 可以返回 Option<_>,但是...
Some() & else { None })即可获得相同的行为在 Rust 中,几乎所有内容都是表达式(let-bindings 和以分号结尾的表达式除外,即所谓的表达式语句)。还有一些表达式总是返回() 的例子,因为没有其他意义。这些包括(复合)赋值(why?)、循环和 if-without-else。
【讨论】: