Rust之语法<2>函数

来源:互联网 发布:指向数组元素的指针 编辑:程序博客网 时间:2024/05/23 16:59

每个Rust程序至少有一个函数,那就是:main 函数:

fn main(){}

这是最简单的函数声明方式。就像我们之前提到的那样,关键字fn(function缩写) 表明这是一个函数,fn 后面跟上函数名,接着是() 用来放函数的参数,最后是{ } 放函数体。下面是另一个函数:

fn foo(){}

那么,函数有一些参数怎么样呢?请看:

fn print_number(x:i32){     println!("x is :{}",x);}

下面是使用print_number 函数的完整程序:

fn main(){    print_number(5);}fn print_number(x:i32){    println!("x is :{}",x);

就像你看到的那样,函数参数和let声明一样:在参数名后添加和参数类型

不像let ,你一定要声明函数参数的类型。下面的代码是错误的:

fn print_number(x,y){    println!("sum is :{}",x+y);}

编译程序,得到这样的错误:

src/main.rs:5:18: 5:19 error: expected one of `:` or `@`, found `,`src/main.rs:5 fn print_number(x,y){

如果函数有一个返回值是怎样的呢?这里有个函数,作用是向一个整数加1:

fn add_one(x:i32)->i32{    x+1}

Rust函数返回一个值,可以在”arrow”,即-> 后面声明返回值类型。函数体的最后一行决定着函数的返回值,要注意返回值的表达式是没有”;“符号的。

diverging functions即分支函数

Rust为分支函数准备了一些特殊的函数,分支函数是一类不返回的函数:

fn diverges() -> ! {    panic!("This function never returns!");}

println! 相似,panic! 也是一个宏。与println 不同,panic() 会引起当前执行的线程崩溃,并且会给出一些信息。

因为这个函数会引起崩溃,所以它永远不会返回,函数返回值是 ,读作"diverge" ,一个分支函数可以被当作任何类型:

let x: i32 = diverges();let x: String = diverges();
0 0
原创粉丝点击