Rust 程式設計視訊教程(進階)——005_1 閉包介紹

linghuyichong發表於2020-01-15

頭條地址:https://www.ixigua.com/i677586170644791348...
B站地址:https://www.bilibili.com/video/av81202308/

1、閉包是可以儲存進變數或者作為引數傳遞給其它函式的匿名函式。閉包和函式不同的是,閉包允許捕獲呼叫者作用域中的值。

2、閉包的使用方式
例子1:

fn main() {
    let use_closure = || {
        println!("This is a closure");
    };

    use_closure ();
}

語法格式:

fn add_one_v1(x: u32) -> u32 { x + 1 } //函式
let add_one_v2 = |x: u32| -> u32 { x + 1 }; //閉包
let add_one_v3 = |x| { x + 1 }; //自動推導
let add_one_v4 = |x| x+1; //自動推導

說明:閉包定義會為每個引數和返回型別推導一個具體型別。但是不能推導兩次。

錯誤例子:

let example_closure = |x| x;
let s = example_closure(String::from("hello"));
let n = example_closure(5); //報錯,嘗試推導兩次,變成了不同的型別
本作品採用《CC 協議》,轉載必須註明作者和本文連結

令狐一衝

相關文章