点击此处浏览总目录

函数

语法:fn <函数名> ( <参数> ) <函数体>

 

fn another_function() { //Rust不在乎您在何处定义函数,只需在某个地方定义它们即可
    println!("Hello, runoob!");
}

fn main() { 
    println!("Hello, world!");
    another_function();
}

//输出:
//Hello, world!
//Hello, runoob!

 

函数命名:函数名称的命名风格是小写字母以下划线分割

 

函数参数
  Rust中定义函数如果需要具备参数必须声明参数名称和类型

fn main() {
    another_function(5, 6);
}

fn another_function(x: i32, y: i32) {
    println!("x 的值为 : {}", x);
    println!("y 的值为 : {}", y);
}

//运行结果:
//x 的值为 : 5
//y 的值为 : 6

 

函数体
  函数体由一系列可以以表达式结尾的语句组成

  语句是执行某些操作且没有返回值的步骤

let a = (let b = 2);  //错误, 因为语句let b = 2是没有返回值的

  表达式有计算步骤且有返回值, 以下是表达式

//假设标识符a,b,c都已被定义已经被定义
a = 7
b + 2
c * (a + b)

 

函数体表达式

  Rust中可以在一个用{}包括的块里编写一个较为复杂的表达式, 这种表达式叫函数体表达式

fn main() {
    let x = 5;

    let y = {
        let x = 3;
        x + 1
    };

    println!("x 的值为 : {}", x);
    println!("y 的值为 : {}", y);
}

//输出:
//x 的值为 : 5
//y 的值为 : 4

在{}块中可以使用函数语句,最后一个步骤是表达式,此表达式的结果值是整个表达式块所代表的值
注意:函数体表达式里最后一个表达式是不能有分号的
      函数体表达式并不能等同于函数体,它不能使用 return 关键字

 

函数嵌套

  函数中可以嵌套另一个函数

fn main() {
    fn five() -> i32 {
        let x = 4;
        x + 1
    }
    println!("five() 的值为: {}", five());
}

 

函数返回值

  函数声明返回值类型的方式, 是在参数声明之后用"->"来声明函数返回值的类型
  在函数体中,随时都可以以return关键字结束函数运行并返回一个类型合适的值

fn add(a: i32, b: i32) -> i32 {
    return a + b;
}

注意:Rust不支持自动返回值类型判断

     如果函数没有明确声明返回值的类型, 函数将被认为是"纯过程",不允许产生返回值, 即函数体内可以使用return,但return后面不能有返回值表达式
     这样做的目的是为了让公开的函数能够形成可见的公报

 

posted @ 2020-07-31 17:15  立业的博客  阅读(110)  评论(0编辑  收藏  举报