頭條地址: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 協議》,轉載必須註明作者和本文連結