簡體   English   中英

如何返回一個函數?

[英]How can I return a function?

我嘗試重新創建功能組合

fn compose<A, B, C>(f : |B| -> C,
                    g : |A| -> B)
                    ->  |A| -> C{
  |x| f(g(x))
}

但是我收到一生的錯誤。 我讀到閉包是基於堆棧的,但沒有解釋為什么我會收到此錯誤。

let f3 = compose(f1,f2);

我不能將閉包移出當前范圍嗎?

是的,Rust的當前閉包通過引用捕獲,並將閉包的環境(即對捕獲變量的引用)放置在堆棧上,通過引用對其進行引用。 因此,每當您有一個捕獲外部變量的閉包(捕獲fg )時,它就被鏈接到創建它的堆棧框架。

C ++ 11樣式的無盒裝閉包通過允許按值捕獲值並允許直接存儲環境(即沒有強制引用)來解決此問題。 確切的語法尚未確定,但是您寫的內容可能是有效的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM