这里对于fibonacci的调用有点不明白
来源:6-1 高阶函数

qq_慕设计1199668
2021-03-28
第一个问题 :我第二个调用cost 里面先用引用的方法创建 val fib = ::fibonacci 然后再去调用 println(fib.invoke().invoke()) 和第一个调用cost得到的结果是一样的 ,但是 println(result.invoke()) 结果不一样 不是很明白 为啥会这样?
第二个问题: 在第一个调用cost的时候,为啥 fib()的值不是一直是0 ?
写回答
1回答
-
bennyhuo
2021-03-28
你这前后两个 fib 变量的含义不一样。最好做下区分。
第一个 fib 是 fibonacci 函数调用的返回值(也是一个函数,用于返回下一个斐波那契数列的值)
第二个 fib 是 fibonacci 函数的引用
因此你上面的代码当中,第一个 fib 等价于 result。
第二个 cost 当中 fib.invoke().invoke(),相当于每次通过第一个 invoke 拿到了一个斐波那契数列生成器(等价于第一个 fib),然后再 invoke 拿到斐波那契数列的第一个值。
你单步调试一下吧。
012021-03-29
相似问题