函数
fn main() {
println!("hello world");
fn2();
}
fn fn2() {
println!("fn2");
}
函数定义以 fn
开始并在函数名后面跟一对圆括号。大括号告诉编译器函数的开始和结尾。
可以使用函数名后跟圆括号来调用定义过的任意函数。
函数参数
fn main() {
println!("hello world");
fn2(1, 2);
}
fn fn2(x: i32, y: i32) {
println!("fn2, x:{}, y:{}", x, y);
}
包含语句和表达式的函数体
语句是执行一些操作但不返回值的指令。表达式计算并生产一个值。
fn main() {
let y = 6; // 是一个语句
}
使用let
关键字创建变量并绑定一个值是一个语句。let y = 6;
是一个语句。
fn main() {
let a = 6; // 6 是一个表达式
let y = { // {} 是表达式
let x = 3;
x + 1
};
}
6
是表达式,它计算出的值是 6
。函数调用是一个表达式。宏调用是一个表达式。{}
也是一个表达式。
注意结尾没有分号的哪一行x + 1
,表达式的结尾没有分号。如果在后面加上分号,它就变成了语句,而语句不会返回值。
具有返回值的函数
fn five() -> i32 {
5
}
fn main() {
let x = five();
x = push_one(x);
println!("{}", x);
}
fn push_one(i: i32) -> i32 {
i + 1
}
函数返回值在 ->
后面声明类型。