Rust - 函数声明

Rust - 函数声明 首页 / Rust入门教程 / Rust - 函数声明

函数将程序组织成逻辑代码块,一旦定义,可以调用函数来访问代码,这使代码可重用,此外,函数使读取和维护程序代码变得容易。

定义函数

函数定义指定什么以及如何完成特定任务,在使用函数之前,必须先对其进行定义,函数主体包含应由函数执行的代码。函数命名的规则类似于变量的命名规则,使用 fn 关键字定义函数。下面给出了定义标准函数的语法

fn function_name(param1,param2..paramN) {
   //函数代码区
}

函数声明可以选择包含parameters/arguments,参数用于将值传递给函数。

//字义函数
fn fn_hello(){
   println!("hello from function fn_hello ");
}

调用函数

必须调用一个函数才能执行它,此过程称为函数调用,调用函数时,应传递参数值,调用另一个函数的函数称为调用者函数。

function_name(val1,val2,valN)

调用函数示例

fn main(){
   //调用函数
   fn_hello();
}

在这里, main()是调用者函数。

下面的示例定义一个函数 fn_hello() ,该函数将消息打印到控制台, main() 函数调用 fn_hello()函数。

fn main(){
   //调用函数
   fn_hello();
}
//定义函数
fn fn_hello(){
   println!("hello from function fn_hello ");
}
hello from function fn_hello

函数返回值

函数还可以将值和控件一起返回给调用者,这样的函数称为返回函数。

可以使用以下两种语法之一来定义具有返回类型的函数。

有 return 语句

//语法1
function function_name() -> return_type {
   // 代码区
   return value;
}

无 return语句 

//语法2
function function_name() -> return_type {
   value // 没有分号表示返回这个值
}

返回值示例

fn main(){
   println!("pi value is {}",get_pi());
}
fn get_pi()->f64 {
   22.0/7.0
}
pi value is 3.142857142857143

带参数的函数

参数是一种将值传递给函数的机制,参数是函数语法的一部分,参数值在调用过程中传递给函数,除非明确指定,否则传递给函数的值的数量必须与定义的参数的数量匹配。

可以使用以下技术之一将参数传递给函数-

按值传递

调用方法时,将为每个值参数创建一个新的存储位置,实际参数的值将被复制到其中,因此,对调用的方法内部的参数所做的更改不会对参数产生影响。

下面的示例声明一个变量no,该变量的初始值为5,该变量作为参数(按值)传递给 mutate_no_to_zero() 函数,该函数将值更改为零,在函数调用之后,当控制权返回主方法时,该值将相同。

fn main(){
   let no:i32=5;
   mutate_no_to_zero(no);
   println!("The value of no is:{}",no);
}

fn mutate_no_to_zero(mut param_no: i32) {
   param_no=param_no*0;
   println!("param_no value is :{}",param_no);
}
param_no value is :0
The value of no is:5

引用传递

当通过引用传递参数时,与值参数不同,不会为这些参数创建新的存储位置,参考参数表示与提供给该方法的实际参数相同的存储位置。参数值可以通过在变量名前面加上&来通过引用传递。

在下面给出的示例中,我们有一个变量 no ,最初是5,对变量no的引用传递给 mutate_no_to_zero() >函数,该函数对原始变量进行操作,函数调用后,当控制权返回到main方法时,原始变量的值为零。

fn main() {
   let mut no:i32=5;
   mutate_no_to_zero(&mut no);
   println!("The value of no is:{}",no);
}
fn mutate_no_to_zero(param_no:&mut i32){
   *param_no=0; 
}

*运算符用于访问变量 param_no 指向的存储位置中存储的值,这也称为取消引用。

无涯教程网

输出将是-

The value of no is 0.

字符串参数

main()函数将字符串对象传递给 display()函数。

fn main(){
   let name:String=String::from("LearnFK");
   display(name); 
   //display 后无法访问名称
}
fn display(param_name:String){
   println!("param_name value is :{}",param_name);
}
param_name value is :LearnFK

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

Python核心技术与实战 -〔景霄〕

分布式技术原理与算法解析 -〔聂鹏程〕

Vim 实用技巧必知必会 -〔吴咏炜〕

Go 并发编程实战课 -〔晁岳攀(鸟窝)〕

体验设计案例课 -〔炒炒〕

陶辉的网络协议集训班02期 -〔陶辉〕

大数据经典论文解读 -〔徐文浩〕

大厂设计进阶实战课 -〔小乔〕

B端产品经理入门课 -〔董小圣〕

好记忆不如烂笔头。留下您的足迹吧 :)