这里对于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 拿到斐波那契数列的第一个值。

你单步调试一下吧。

0
1
qq_慕设计1199668
好的 谢谢老师
2021-03-29
共1条回复

学会Kotlin 突破开发语言瓶颈

如果有一门语言可以取代Java,那么它一定是Kotlin。

1777 学习 · 487 问题

查看课程