课程名称:领略Rust之美,挑战双高语言
课程章节: 第4章 Rust 流程控制 4.2 表达式的多种形式
主讲老师:叶枭
课程内容:
今天学习的内容是 Rust 中的表达式(expression)和语句(statement)。
表达式和语句
Rust 是一门基于表达式的语言。Rust 中的语句和表达式,和很多其他语言都不太一样。
语句和表达式是 Rust 语言实现逻辑控制的基本单元。
在 Rust 程序里面,表达式可以是语句的一部分,反过来,语句也可以是表达式的一部分。
- 一个表达式总会产生一个值,因此它必然有类型。
- 语句不产生值,它的类型永远是 ();
- 如果把一个表达式加上分号,那么它就变成了一个语句;
- 如果把一个语句放到一个语句块中包起来,那么它就可以当成一个表达式使用。
表达式和语句最大的区别,表达式总会返回一个值,而语句不会。比如:
1 + 1; // 表达式,执行完有返回值是 2
let a = 1; // 语句,将 1 赋值给变量 a,执行完没有返回值
Rust 的大部分代码都会有返回值,除了这些语句:
-
变量声明:
let a = 1;
-
模块声明:
mod mod1 {};
-
函数声明:
fn main() {}
-
结构体声明:
struct Person {}
-
枚举声明:
enum Color {}
-
…
if 表达式
在其他语言中,用于流程控制的都是语句,比如if
条件语句,while
循环语句。而在 Rust 中,这些都属于表达式而不是语句。
这也意味着,一个“if 语句”或者"while语句"会有返回值。
先看一个 if
表达式,返回值使用一个变量接收即可:
let name = 'kw';
let res = if name='kw' {
'kw'
} else {
'KW'
}
再比如一个 while
循环表达式:
let mut count = 0;
let res = while count < 5 {
println!("我们跳啊跳,跳啊跳...");
count += 1;
};
println!("{}", res);
关于 if 表达式和 while 表达式,初学者可能会很疑惑。没关系,只要头脑里有它们是表达式的意识,日后再多写几条,就能接受这种设定了。
课程收获
这节课学习了 Rust 中语句和表达式的概念。Rust 是一门基于表达式的编程语言,在使用上和其他编程语言有些许不同之处。在编码时可以多体会这一点。