采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
第一个问题 :我第二个调用cost 里面先用引用的方法创建 val fib = ::fibonacci 然后再去调用 println(fib.invoke().invoke()) 和第一个调用cost得到的结果是一样的 ,但是 println(result.invoke()) 结果不一样 不是很明白 为啥会这样? 第二个问题: 在第一个调用cost的时候,为啥 fib()的值不是一直是0 ?
你这前后两个 fib 变量的含义不一样。最好做下区分。
第一个 fib 是 fibonacci 函数调用的返回值(也是一个函数,用于返回下一个斐波那契数列的值)
第二个 fib 是 fibonacci 函数的引用
因此你上面的代码当中,第一个 fib 等价于 result。
第二个 cost 当中 fib.invoke().invoke(),相当于每次通过第一个 invoke 拿到了一个斐波那契数列生成器(等价于第一个 fib),然后再 invoke 拿到斐波那契数列的第一个值。
你单步调试一下吧。
好的 谢谢老师
登录后可查看更多问答,登录/注册
如果有一门语言可以取代Java,那么它一定是Kotlin。
1.4k 4
1.4k 1
273 1
1.2k 16
1.1k 16