Als*_*afi 4 type-mismatch rust
以下代码无法编译:
fn testing() -> i32 {
let x = 5;
if x == 5 {
5
}
6
}
Run Code Online (Sandbox Code Playgroud)
出现此错误:
fn testing() -> i32 {
let x = 5;
if x == 5 {
5
}
6
}
Run Code Online (Sandbox Code Playgroud)
如果我return在 前面放了一个显式5,或者如果我把6里面放了一个else块,一切正常。Rust 到底在抱怨什么?
在 Rust 中,几乎所有东西都是一个表达式,包括if- else。if生成一个值,但如果表达式失败(即x != 5),则表达式没有值。将6放入 else 块时,if-else语句返回一个整数(i32由于返回类型,这将是一个)。您可以使用分号取消语句的值。
return 5(注意,没有分号)也是一个语句,结果是(). 现在if表达式总是返回(),这很好。
习惯上你应该更喜欢这个else变体,所以你可以省略return:
fn testing() -> i32 {
let x = 5;
if x == 5 {
5
} else {
6
}
}
Run Code Online (Sandbox Code Playgroud)