Rust-定义函式Function(一)

如果编写多次相同的代码,则可以把代码封装在一个块中,然後为该代码命名

通过这种方式就定义了函式,然後可以通过命名的名称来调用该函式

要订一个函式需要使用"fn"关键字後面接着函式的名称跟圆括号然後是一个大括号块

大括号的块称为函式体,函式体之前都称为签名

下面例子简单使用函式

fn hello_word() {
    println!("hello word!")
}

hello_word();
hello_word();
hello_word();

输出
hello word!
hello word!
hello word!

後定义函式

a;
let a = 5; // 非法使用变数

hello_word(); // 合法使用後定义的函式
fn hello_word() {
    println!("hello word!")
}

函式屏蔽其他函式

fn hello_word() {}
fn hello_word() {} // 多次定义函式

编译时会出错
the name `hello_word` is defined multiple times

但是可以包在块里多次定义fn

{
    fn hello_word() {
        println!("hello word 1")
    }

    hello_word();
}
{
    fn hello_word() {
        println!("hello word 2")
    }

    hello_word();
}

输出
hello word 1
hello word 2

每个定义函式只能在块里面有效,下面是不合法的

{
    fn hello_word() {
        println!("hello word 2")
    }
}

hello_word();

编译时会出错
cannot find function `hello_word` in this scope

也可以在屏蔽外的块级定义另一个函式

在main外部定义函式hello_word(),因其内部也定义了hello_word,所以永远用不到外部的定义函式

通常编译器会警告

fn hello_word() {
    println!("hello word 1")
}

fn main() {
    hello_word();

    {
        hello_word();
        fn hello_word() {
            println!("hello word 2")
        }
    }

    hello_word();
    fn hello_word() {
        println!("hello word 3")
    }
}

这边输出
hello word 3
hello word 2
hello word 3

<<:  JavaScript Day 15. every() 与 some()

>>:  【第十天 - Flutter Bloc Unit Test+Mocktail 范例】

Day9. 以放声思考法快速进行概念验证

为何要进行前期概念验证 一般来说,设计产品的流程会经过三个大阶段: (1)概念发想 → (2)设计(...

【制造转型分享】制造业导入MES数位转型,政府补助最高 5000 万

转型智慧工厂 导入 MES 冲产能 立法院於 2022 年元月三读通过「产业创新条例」第 10 条之...

初学者跪着学JavaScript Day4 : 宣告:let、const

一日客家话:空心菜(客)风吹:vung coi ES6 之前没有 block 作用域概念是使用var...

我个人理解two's complement的方式

本篇文章的主要目的:让已经了解two's complement运算规则的人,提供一个了解其为何如此神...

Rust-并行&并发(一)

有关於并行和并发的定义每个人可能有不一样的解释 并行指的是在同一时刻,多条指令在 CPU 上同时执行...