一、函数定义
函数在Rust中有着非常广泛的应用。其中重要的main函数了,它是大部分程序开始的地方。你应该也对fn关键字有印象,我们可以用它来声明一个新的函数。 Rust代码使用蛇形命名法(snake case)来作为规范函数和变量名称的风格(go语言与其相反是驼峰命名格式)。蛇形命名法只使用小写的字母进行命名,并以下画线分隔单词。函数声明中定义参数(parameter),它们是一种特殊的变量,并被视作函数签名的一部分(函数名和函数类型)。当函数存在参数时,你需要在调用函数时为这些变量提供具体的值。
下面demo1函数展示了Rust中参数的样子:
fn main() {
demo1(5);
demo2();
println!("demo3:{}",demo3())
}
// 1.函数定义
fn demo1(x: i32) {
println!("demo1:The value of x is: {}", x);
}
二、函数体语句和表达式
rust的语句和表达式最大的区别在于语句不会有返回值,表达式是有返回值的,比如:
// 2.函数体语句与表达式
fn demo2() {
// 1.下面定义x就是一个语句,不是表达式
let x = 5;
// 2.右边'x+1'就是一个表达式,返回6绑定到y变量上
let y = x + 1;
println!("demo2:x={},y={}",x,y);
// 3.花括号'{}'也是一个表达式
let z = {
let a = 3;
a+1 // 后面不能有";",不然"a+1"就是语句了就没有返回值了
};
println!("demo2:z={}",z)
}
三、函数返回值
函数可以向调用它的代码返回值。虽然你不用为这个返回值命名,但需要在箭头符号(->)的后面声明它的类型。在Rust中,函数的返回值等同于函数体最后一个表达式的值。你可以使用return关键字并指定一个值来提前从函数中返回,但大多数函数都隐式地返回了最后的表达式。
// 3.函数返回值
fn demo3() -> i16{
let x = 8;
4+x // 后面不能带";",不能写成"4+x;",否则就是语句就没有返回值了,会报错:"implicitly returns `()` as its body has no tail or `return` expression"
// 等价于下面写法
//return 4+x
//等价于下面写法,
//return 4+x;
}