天天看点

Rust语言基础—函数与注释Rust 语言基础

Rust 语言基础

三、函数

1、基本概念

1.1、定义

  • Rust 语言使用关键字 fn 来定义函数,如:fn test(){…};

1.2、命名规范

  • Rust 代码中的函数和变量名使用 snake case 规范风格。在 snake case 中,所有字母都是小写并使用下划线分隔单词。
  • 例子:
    fn main() {
        println!("Hello, world!");
    
        another_function();
    }
    
    fn another_function() {
        println!("Another function.");
    }
    
               
  • 由上面的例子,也可以看出,Rust 语言对函数的声明定义的位置没有严格要求,只要声明定义了就行,在主调函数前面或后面都可以。

2、函数参数

  • Rust 语言的函数也分为带参函数和无参函数,带参函数的声明形式如下:
    fn 函数名(形参:参数类型){函数体};
    // 例子:
    fn function(x: i32) {
        println!("The value of x is: {}", x);
    }
               
  • 在 Rust 语言,声明函数时必须声明每个参数的类型,如果是含参函数,当参数列表中不止一个参数时,像其他编程语言一样,Rust 也使用 “,” 来分隔。例如:
    fn another_function(x: i32, y: i32) {
        println!("The value of x is: {}", x);
        println!("The value of y is: {}", y);
    }
               

3、函数体

  • 函数体由一系列的语句和一个可选的结尾表达式构成。例子:
    fn main() {
        let y = 6;
    }
    fn main() {
        let x = 5;
        let y = {
            let x = 3;
            x + 1
        };
        println!("The value of y is: {}", y);
    }
    
               
  • 在第二例子中,将一个代码块赋值给了 y,这是 Rust 语言里特有的;而且,在代码块里的最后一行 ”x+1“ 并没有用分号结尾,这就是一个表达式;表达式的结尾没有分号。如果在表达式的结尾加上分号,它就变成了语句,而语句不会返回值。

4、函数返回值

  • Rust 的函数也有无返回值和有返回值的区别,有返回值的函数生命形式如下:
    fn fun_name() -> i32{....} 
    // fn 函数名() -> 返回值类型{函数体}
    // 例子:
    fn double() -> f64 {
        PI
    }
    fn main() {
        println!("Hello, world!");
        another_function();
        function(520);
        function1(18,'R');
        let num = double();
        println!("The value of num is {}",num);
    }
    //输出:
    /*
    Hello, world!
    Another function.
    The value of x is: 520
    The value of x is: 18
    The value of y is: R
    The value of num is 3.141592653589793
    */
               
  • 带返回值的函数,必须不以语句结尾,因为语句并不会返回值;必须以符合返回值类型的表达式结尾,下面是一个待返回值的函数的错误写法:
    fn plus_one(x: i32) -> i32 {
        x + 1;
    }
    // 错误信息:
    /*
     fn plus_one(x: i32) -> i32 {
       |    --------            ^^^ expected i32, found ()
       |    |
       |    this function's body doesn't return
    33 |     x + 1;
       |          - help: consider removing this semicolon
       |
       = note: expected type `i32`
                  found type `()`
    */
               

四、注释

  • Rust 语言使用双斜杆 “//” 和 “” 作为注释符,双斜杆之后的一整行字符 Rust 编译器都不执行。双斜杆是行注释符.
  • ”“ 是块注释符。
  • 示例:
    /*
    有返回值,返回值为实数圆周率
    */
    //  -> 返回值类型