當我偶然發現閉包時,我正在參觀 golang,一件事導致另一件事,我登陸https://www.calhoun.io/5-useful-ways-to-use-closures-in-go/
在這里我被代碼片段難住了
func makeFibGen() func() int {
f1 := 0
f2 := 1
return func() int {
f2, f1 = (f1 f2), f2
return f1
}
}
有人可以把這個分解給我并解釋到底發生了什么嗎?特別是這一行:
f2, f1 = (f1 f2), f2
uj5u.com熱心網友回復:
f2被賦值的f1 f2同時f1被賦值(的原始值)f2。因此,如果f1, f2是3, 5之前,它們將是5, 8( 5, (3 5)) 之后。
這樣,我們得到了一個斐波那契生成器,因為每次呼叫內部函式時,前兩個值的總和都會被回傳并與前一個數字中較大的一個一起保存以備下次使用,從而構建下一對相加時將產生下一個斐波那契數,依此類推。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/327729.html
上一篇:在Javascript中,如何在物件內使用(全域)函式?該函式會做復雜的事情,并在創建物件時使用
下一篇:函子或布爾比較器
