采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
问题:
为啥有些 block: suspend () -> Unit 生成的是 SuspendLambda 而有些 block: suspend () -> Unit 生成的是 Function 呢?
但是无论是 SuspendLambda 还是 Function ,自身都实际上是状态机,同时都有一个 Continuation 参数。 这个是共同点。
(我之前的回复没了??)
是这样的,我看了下最新版本目前的做法是,使用 suspend {} 的形式会编译生成 SuspendLambda 类型的实例。不过这个吧,编译器的内部实现,也可能下个版本就改了,不用太纠结,了解它怎么运行的就行。
我用最新的代码确认了一下,suspend {} 现在都会编译成 SuspendLambda 类型。同学不用纠结了~
其实我们只要知道用于启动协程的 suspend {} 会编译成 SuspendLambda 作为协程体就可以了。需要提醒同学的是,这些都是Kotlin编译器的内部实现,版本之间其实一直也经常有变化,我们只需要抓住规律了解本质即可,不要过于纠结细节哈。
老师你好,有一下问题帮忙解答下: 1. 如果是单独suspend {}挂起函数,是否会编译成SuspendLambda类型,还是必须结合.createCoroutine才可以。 2. 通过什么方式可以看到编译生成SuspendLambda类型对象
登录后可查看更多问答,登录/注册
如果有一门语言可以取代Java,那么它一定是Kotlin。
1.6k 4
1.7k 1
507 1
353 20
1.5k 16
购课补贴联系客服咨询优惠详情
慕课网APP您的移动学习伙伴
扫描二维码关注慕课网微信公众号