控制制流,第一部分
迄今为止,我们的所有程序都相当直接。
一系列指令自上而下执行,仅此而已。
现在是引入分支的时候了。
if
表达式
if
关键字用于仅在条件为真时执行一段代码。
这里有个简单示例:
#![allow(unused)] fn main() { let number = 3; if number < 5 { println!("`number` 小于5"); } }
此程序会打印 number 小于5
,因为条件 number < 5
为真。
与多数编程语言一样,Rust 支持可选的 else
分支,在 if
表达式中的条件为假时执行代码块。
例如:
#![allow(unused)] fn main() { let number = 3; if number < 5 { println!("`number` 小于5"); } else { println!("`number` 大于或等于5"); } }
布尔值
if
表达式中的条件必须为类型 bool
,即布尔值。
布尔值,与整数一样,在 Rust 中是原始类型。
布尔值有两个可能:true
或 false
。
真值与非真值
如果 if
表达式中的条件不是布尔值,你会遇到编译错误。
例如,以下代码无法编译:
#![allow(unused)] fn main() { let number = 3; if number { println!("`number` 不为零"); } }
你会得到以下编译错误:
error[E0308]: mismatched types
--> src/main.rs:3:8
|
3 | if number {
| ^^^^^^ expected `bool`, found integer
这源自 Rust 的类型强制哲学:不存在从非布尔类型到布尔类型的自动转换。
不像JavaScript 或 Python, Rust 不具备 真值
或 假值
的概念。
你需要明确你想检查的条件。
比较运算符
使用比较运算符构建if 表达式的条件非常常见。 在处理整数时,Rust 提供以下比较运算符:
==
:等于!=
:不等于<
:小于>
:大于<=
:小于或等于>=
:大于或等于
参考
本节练习位于 exercises/02_basic_calculator/03_if_else