📅  最后修改于: 2020-11-02 04:15:42             🧑  作者: Mango
功能是可读,可维护和可重用代码的构建块。函数是执行特定任务的一组语句。函数将程序组织成逻辑代码块。一旦定义,可以调用函数来访问代码。这使代码可重用。此外,功能使读取和维护程序代码变得容易。
函数声明告诉编译器函数的名称,返回类型和参数。函数定义提供了函数的实际身体。
Sr.No | Function & Description |
---|---|
1 |
Defining a function TA function definition specifies what and how a specific task would be done. |
2 |
Calling or invoking a Function A function must be called so as to execute it. |
3 |
Returning Functions Functions may also return value along with control, back to the caller. |
4 |
Parameterized Function Parameters are a mechanism to pass values to functions. |
函数定义指定什么以及如何完成特定任务。在使用函数之前,必须先对其进行定义。函数主体包含应由函数执行的函数。函数命名的规则类似于变量的命名规则。使用fn关键字定义函数。下面给出了定义标准函数的语法
fn function_name(param1,param2..paramN) {
// function body
}
函数声明可以选择包含参数/参数。参数用于将值传递给函数。
//Defining a function
fn fn_hello(){
println!("hello from function fn_hello ");
}
必须调用一个函数才能执行它。此过程称为函数调用。调用函数时,应传递参数值。调用另一个函数的函数称为调用函数。
function_name(val1,val2,valN)
fn main(){
//calling a function
fn_hello();
}
在这里, main()是调用者函数。
以下示例定义了一个函数fn_hello() 。该函数将消息打印到控制台。 main()函数调用fn_hello()函数。
fn main(){
//calling a function
fn_hello();
}
//Defining a function
fn fn_hello(){
println!("hello from function fn_hello ");
}
hello from function fn_hello
函数还可以将值和控件一起返回给调用者。这样的函数称为返回函数。
可以使用以下两种语法之一来定义具有返回类型的函数。
// Syntax1
fn function_name() -> return_type {
//statements
return value;
}
//Syntax2
fn function_name() -> return_type {
value //no semicolon means this value is returned
}
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
当您通过引用传递参数时,与值参数不同,不会为这些参数创建新的存储位置。参考参数表示与提供给该方法的实际参数相同的存储位置。通过在变量名前加上&前缀,可以通过引用传递参数值。
在下面给出的例子中,我们有一个变量没有,这是最初5.一种参考变量没有被传递给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; //de reference
}
*运算符用于访问变量param_no指向的存储位置中存储的值。这也称为取消引用。
输出将是-
The value of no is 0.
main()函数将字符串对象传递给display()函数。
fn main(){
let name:String = String::from("TutorialsPoint");
display(name);
//cannot access name after display
}
fn display(param_name:String){
println!("param_name value is :{}",param_name);
}
param_name value is :TutorialsPoint