iT邦幫忙

2021 iThome 鐵人賽

DAY 16
0
Modern Web

Rust 新手村系列 第 16

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

上一篇
Rust-結構體(Struct)
下一篇
Rust-定義函式Function(二)
系列文
Rust 新手村30

尚未有邦友留言

立即登入留言