頭條地址:https://www.ixigua.com/i677586170644791348...
B站地址:https://www.bilibili.com/video/av81202308/
github地址:https://github.com/anonymousGiga/learn_rus...
1、函式指標
函式指標允許我們使用函式作為另一個函式的引數。函式的型別是 fn ,fn 被稱為 函式指標。指定引數為函式指標的語法類似於閉包。
例子:
fn add_one(x: i32) -> i32 {
x + 1
}
fn do_twice(f: fn(i32) -> i32, arg: i32) -> i32 {
f(arg) + f(arg)
}
fn main() {
let answer = do_twice(add_one, 5);
println!("The answer is: {}", answer);
}
函式指標實現了所有三個閉包 trait(Fn、FnMut 和 FnOnce),所以總是可以在呼叫期望閉包的函式時傳遞函式指標作為引數。傾向於編寫使用泛型和閉包 trait 的函式,這樣它就能接受函式或閉包作為引數。
例子://使用閉包和函式指標作為引數
fn wrapper_func<T>(t: T, v: i32) -> i32
where T: Fn(i32) -> i32 {
t(v)
}
fn func(v: i32) -> i32 {
v + 1
}
fn main() {
let a = wrapper_func(|x| x+1, 1);
println!("a = {}", a);
let b = wrapper_func(func, 1);
println!("b = {}", b);
}
本作品採用《CC 協議》,轉載必須註明作者和本文連結