函数
正如 Hello World 示例中的那样:
fn main() {
println!("Hello, world!");
}
Rust 中使用关键字 fn
来声明一个函数。一般函数都会有入参和返回值。函数体包含了一系列的语句和表达式。
函数返回值可以使用 return 语句,也可以使用表达式。
函数的名字和变量一样,遵循蛇形命名法(snake case):
fn getPersonList () {} // ×
fn get_person_list () {} // √
函数可以定义在任意位置,好似 JS 中的函数声明提升。
Rust 是强类型语言,声明函数时如果有参数,参数必须指定类型:
fn main() {
add(10, 20); // 30
}
// 两个参数都是 i32 类型的整数
fn add(a: i32, b: i32) {
println!("{}", a + b);
}
函数若有返回值,必须通过 ->
指明返回值的类型:
fn main() {
let res = add(10, 10);
println!("函数 add 执行的结果是: {}", res);
}
// 两个参数都是 i32 类型的整数,返回值也是 i32
fn add(a:i32, b:i32) -> i32 {
return a + b;
}
关于函数的返回值,容易发生混乱:
在 JS 中,使用 return
关键字来结束函数的执行,并将 return
后面的结果作为函数的返回值。
在 Rust 中,基本和 JS 差不多,可以使用 return
来返回函数的执行结果,就像上面那样。也可以使用一个表达式来作为函数的返回内容:
fn main() {
let res = add(10, 10);
println!("函数 add 执行的结果是: {}", res);
}
fn add(a:i32, b:i32) -> i32 {
// `a + b` 是一条表达式,求值后,返回一个值.因为它是函数的最后一行,因此该表达式的值也就是函数的返回值。
a + b
}
如果函数没有返回值,返回值的类型可以不写,也可以写成 -> ()
:
fn main() {
foo(10);
}
fn foo(a:i32) ->() {
println!("{}", a);
}
小结
本文介绍了 Rust 函数的声明方式,主要注意事项是参数和返回值的类型。如果有参数,一定要指定类型;如果有返回值,也要指定返回值的类型。