通过 if 语句绑定的变量无法正常工作
Variable binding through if statement not working correctly
我写了这段代码:
let x = 5;
let y = if x == 5 {
10
} else {
println!("shapoopoy");
};
当我使用 cargo build
编译时,出现错误:
error[E0308]: if and else have incompatible types
--> src/main.rs:6:9
|
3 | let y = if x == 5 {
| _____________-
4 | | 10
| | -- expected because of this
5 | | } else {
6 | | println!("shapoopoy");
| | ^^^^^^^^^^^^^^^^^^^^^^ expected integer, found ()
7 | | };
| |_____- if and else have incompatible types
|
= note: expected type `{integer}`
found type `()`
附带说明一下,如果我计划在学习 Rust 之后从事一个项目,我应该坚持使用稳定版本吗?如果我确实使用旧版本,我不确定如何将 Rust 包含在我制作的程序中。
让我们看看您的示例代码:
let x = 5;
let y = if x == 5 {
10
} else {
println!("shapoopoy");
};
y
的 类型 是什么?第一个分支解析为某个整数变量(如 u8
或 i32
),但第二个分支解析为 println!
的 return 类型,即 ()
.您不能将 这两种类型存储在一个 space 中,因此编译器会报错。
两个分支都需要解析为相同的类型——这取决于您需要做什么。您可以 return 什么都没有,并将变量设置为副作用:
let x = 5;
let y;
if x == 5 {
y = 10;
} else {
println!("shapoopoy");
}
或return两个分支中的整数:
let x = 5;
let y = if x == 5 {
10
} else {
println!("shapoopoy");
42
};
I'm not sure how to include Rust with the program I make if I do use an older version.
Rust 是一种编译语言。如果您分发已编译的二进制文件,那么您根本不需要 "include" Rust。如果你选择一个稳定版本,那么你总是可以固定到那个版本的 Rust 并用它编译。
我写了这段代码:
let x = 5;
let y = if x == 5 {
10
} else {
println!("shapoopoy");
};
当我使用 cargo build
编译时,出现错误:
error[E0308]: if and else have incompatible types
--> src/main.rs:6:9
|
3 | let y = if x == 5 {
| _____________-
4 | | 10
| | -- expected because of this
5 | | } else {
6 | | println!("shapoopoy");
| | ^^^^^^^^^^^^^^^^^^^^^^ expected integer, found ()
7 | | };
| |_____- if and else have incompatible types
|
= note: expected type `{integer}`
found type `()`
附带说明一下,如果我计划在学习 Rust 之后从事一个项目,我应该坚持使用稳定版本吗?如果我确实使用旧版本,我不确定如何将 Rust 包含在我制作的程序中。
让我们看看您的示例代码:
let x = 5;
let y = if x == 5 {
10
} else {
println!("shapoopoy");
};
y
的 类型 是什么?第一个分支解析为某个整数变量(如 u8
或 i32
),但第二个分支解析为 println!
的 return 类型,即 ()
.您不能将 这两种类型存储在一个 space 中,因此编译器会报错。
两个分支都需要解析为相同的类型——这取决于您需要做什么。您可以 return 什么都没有,并将变量设置为副作用:
let x = 5;
let y;
if x == 5 {
y = 10;
} else {
println!("shapoopoy");
}
或return两个分支中的整数:
let x = 5;
let y = if x == 5 {
10
} else {
println!("shapoopoy");
42
};
I'm not sure how to include Rust with the program I make if I do use an older version.
Rust 是一种编译语言。如果您分发已编译的二进制文件,那么您根本不需要 "include" Rust。如果你选择一个稳定版本,那么你总是可以固定到那个版本的 Rust 并用它编译。