Rust 语句与表达式

Rust 中语法能够分红两大类: 语句(Statement)和表达式(Expression)。 语句是指要执行的一些操做和产生负做用的表达式。 表达式主要用于计算求值。markdown

语句可分为两种: 声明语句(Declaration statement)和 表达式语句(Expression statement)。 * 声明语句,用于声明各类语言项(Item),包括声明变量、静态变量、常量、结构体、函数等,以及经过 extern 和 use 关键字引入包和模块等。 * 表达式语句,特指以分好结尾的表达式。此类表达式求值结果将被舍弃,并总返回单元类型()。函数

/* 下两行为声明语句 */
// extern create std;
// use std::prelude::vl::*


fn main () {
	pub fn answer () -> () {
		let a = 40;
		let b = 2;
		assert_eq!(sum(a, b), 42);
	}
	
	pub fn sum(a: i32, b: i32) -> i32 {
		a + b	
	}
	answer();
}
复制代码

第 1 行和第 2 行为声明语句,无需求职,只是用来引入标准库包以及 prelude 模块。此处作注释是由于 Rust 会为每一个 crate 都自动引入标准库模块,除非使用 #[no_std] 属性指明不须要标准库。spa

fn 关键字定义了两个函数 answer 和 sum。关键字 fn 是 function 缩写。code

函数 answer 没有输入参数,且返回值为 单元类型()。单元类型拥有惟一的值,就是它自己,为方便描述称之为单元值。以单元值做为返回值,表明当前函数无返回值,无返回值的函数无需声明返回类型。orm

在 answer 使用let 声明了两个变量 a 和 b ,其后必须加分号。编译器

assert_eq! 是宏语句,它是由 Rust 提供的断言,容许判断给定的两个表达式求值结果是否相同。以!结尾而且能够像函数同样被调用的语句在 Rust 中被称为it

函数 sun 的两个输入参数和返回值均指定为 i32 类型。函数体只包含一个表达式用于计算 a 与 b 的值,并返回。io

Rust 编译器在解析代码时,若是遇到分号,就会继续日后面执行;若是碰到语句,则执行语句;若是遇到表达式,则会对表达式求值,若是分号后面什么都没有,就会补充上单元值().编译

能够将 Rust 中的一切都当作是表达式。因为分好什么都没有的时候会自动补充单元值的特色,咱们能够将 Rust 语句看作计算结果均为() 的特殊表达式。对于普通表达式来说,则会获得正常的求值结果。table

相关文章
相关标签/搜索