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 关注
- 59 浏览
添加回答
举报