Rust 編程視頻教程(進階)——028

視頻地址

頭條地址:https://www.ixigua.com/i6775861706447913485

源碼地址

github地址:見擴展鏈接。

講解內容

1、函數指針函數指針允許我們使用函數作為另一個函數的參數。函數的類型是 fn ,fn 被稱為 函數指針。指定參數為函數指針的語法類似於閉包。

例子:

<code>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);
}/<code>

函數指針實現了所有三個閉包 trait(Fn、FnMut 和 FnOnce),所以總是可以在調用期望閉包的函數時傳遞函數指針作為參數。傾向於編寫使用泛型和閉包 trait 的函數,這樣它就能接受函數或閉包作為參數。

例子://使用閉包和函數指針作為參數

<code>fn wrapper_func(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);
}
/<code>


分享到:


相關文章: