函数
在前面文章中,基本上都使用了main
函数,而main
函数是rust 程序的入口,声明函数的方式也很简单:
首先来看基本的没有参数的声明函数的方式:
代码语言:javascript复制- 声明函数使用fn关键字
- 依照惯例,针对函数名和变量名Rust使用snake case命名规范,即所有的字母都是小写的,单词之间使用下划线分开,尽量见名知意。
- 调用函数的方式和其他语言差不多,就是函数名加小括号的方式
- 需要注意的是rust和一些其他的语言不同,不关心函数的定义顺序,只要在调用函数时,该函数已经声明了并且能够找的到即可
复制代码
代码语言:javascript复制fn main() {
println!("hello function");
func(); // 在声明func函数之前就调用了,这在python中就是违反语法规则的,但是在rust中是可以的
}
fn func() {
println!(" hello func")
}
复制代码
再来看带有参数的函数的声明方式:
代码语言:javascript复制- 函数的参数有两种,分别是形参(形式参数,*parameters*)和实参(实际参数,*arguments*),简单来说,形参就是在函数定义时规定的在该函数调用时需要给定的参数,实参就是在函数调用时传递给函数的参数。
- 注意在声明有参函数时,有些语言(python)无需声明参数类型,但是在rust中,在函数签名里必须声明每个参数的类型,这样做的好处就是rust编译器在进行编译时就无需推断参数类型了,如果有多个参数,就是用逗号隔开每个参数。
复制代码
代码语言:javascript复制fn main() {
func(5, 'o'); // 5就是实参 argument
}
fn func(x: i32, y: char) { // x就是形参 parameter
println!("x is {}, y is {}", x, y);
}
复制代码
在介绍有返回值的函数之前,需要聊一下函数体中的语句和表达式,函数体是由一系列语句组成,然后可选的可以有一个表达式结束,Rust 是一个基于表达式的语言,语句是执行一些动作的指令,比如定义变量,定义和调用函数等,语句返回的是一个空的tuple, 而表达式会通过计算返回一个值,比如数字6
就是一个表达式,6 1
也是一个表达式。
fn main() { // 函数定义是语句
let x = 1; // 声明变量是语句, 1是表达式
// {}中包含的代码就是表达式
}
复制代码
最后来看一下函数的返回值,在rust中函数的返回值是在->
符号后面声明函数返回值的类型,但是不可以为返回值命名,在rust中默认返回值就是函数体里面最后一个表达式的值,如果想要提前返回可以使用return
关键字并指定返回值。
fn func() -> i32 {
5 // 注意这里不要加; 加上分号就是语句了,返回的值就是空元组
}
fn main() {
let x = func(); // 该函数的返回值默认就是最后一个表达式的值即5
println!("x is {}", x);
}
复制代码
注释
rust中的注释同样分为单行注释和多行注释。
代码语言:javascript复制// 我是单行注释
/* 我是多行注释
我也是多行注释*/
复制代码