1 回答

TA貢獻1864條經驗 獲得超6個贊
typeFunc func() (int, int, Func)只是一個函數類型,其類型名稱是Func. 您可以將其視為具有零參數和 3 個返回值的匿名函數(最后一個返回值也是 Func 類型)。
當將某個變量分配給此函數類型(Func)時,該變量將是此函數的名稱。然后你可以調用以變量名作為函數名的函數。
在上面的代碼中,d, n, f := get_fib(10), d get 10, n get fib(10), fu get func() (int, int, Func) { return get_fib(11) }。然后就可以直接調用f()which 返回結果了get_fib(11)。
==============================================================
為什么需要遞歸類型來創建此功能:
只是我的想法:get_fib 函數要返回三個結果:x,fib 函數的輸入(int 類型),fib 函數的結果(int 類型),返回 get_fib(x+1) 函數的函數(func 類型) ,現在不是 Func)。(所以 get_fib 也是一種遞歸,因為它在返回中使用了 get_fib。)由于函數(類型為 func,現在不是 Func)返回一個 get_fib(x+1) ,其返回類型與 get_fib(x) 的返回類型相同. 所以函數的返回類型應該是int, int, func(func 是 get_fib 返回的第三個結果,它是函數定義本身)。所以需要遞歸函數類型。
簡而言之:
get_fib 的輸出是 (int, int, customfunc)
customfunc 的輸出是 (get_fib) 又是 (int, int, customfunc )。
所以 customfunc 的輸出是 (int, int, customfunc) 這是一個遞歸函數類型
- 1 回答
- 0 關注
- 99 瀏覽
添加回答
舉報