Rust 基础-函数(第二章)

1. 函数

1. 语法

1
2
3
4
5
6
// 单行注释
/* 多行注释
*/
fn 函数名(参数: 参数类型) -> 返回值类型 {
函数体;
}

2. 函数体

函数体是有一系列语句组成,可选的一个表达式结束。

  • 语句(statement)是执行一些操作但不返回值的指令
  • 表达式(expression)计算并产生一个值,函数调用、宏调用、代码块 {} 都是是一个表达式
  • 表达式的结尾没有分号,如果表达式的末尾加上分号,它就转换为语句

3. 参数

参数分为形参(parameter)和实参(argument),前者是函数声明中的,后者是调用函数式传进去的。

在函数定义中,必须声明每个参数的类型。

4. 返回值

大多数的函数,都默认返回值是最后一个表达式的值,若想提前返回,可以使用 return 返回一个值。

可以不对返回值命名,但要在箭头(->)后声明它的类型。

2. 控制流

if 是表达式,条件必须是 bool,且每个分支中的返回值类型必须是一样的。

1
2
3
4
5
6
7
8
9
10
fn main() {
let num = 3;
if num < 5 {
println!("Less than 5");
} else if num > 5 {
println!("More than 5");
} else {
println!("Equl 5");
}
}

3. 循环流

  • loop:反复执行直到遇到 break 关键字
    • 可以使用循环标签,直接到达指定循环位置
    • 可以使用 break 表达式,来添加返回值
  • while:每次循环前执行一次条件
  • for:对集合的每个元素执行,省略编译器在迭代中的索引越界检查
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
fn main() {
let num = 3;
let arr = [1, 2, 3, 4, 5]

loop {
println!("hello")
}
// 跳转至循环标签
'counting_up: loop {
loop {
break 'counting_up;
}
}
// 添加返回值
let result = loop {
counter += 1;
if counter == 10 {
break counter * 2;
}
};

while num != 0 {
println!("hello");
}

for e in a.iter() {
println!("Value is: {}", e);
}
}