有个问题

来源:11-7 案例:Generator 与标准库的序列生成器

慕运维1283185

2020-06-18

val nums = generator { start: Int ->
for (i in 0…5) {
yield(start + i)
}
}

视频中说yeild只希望在{}里边调用,所以也给它加一个receiver GeneratorScope, 我也知道for循环中可以this.yeild(start + i)这样调用,这个this就是GeneratorScope, 这个this做为receiver是从哪传进来的?

写回答

2回答

bennyhuo

2020-06-18


//img.mukewang.com/szimg/5eeb4d0a08eb966a11640537.jpg

//img1.sycdn.imooc.com/szimg/5eeb4d1b0891de1e11700540.jpg

//img.mukewang.com/szimg/5eeb4d260846986911700540.jpg

我把代码里面按顺序列了一下,同学参考一下。

0
2
bennyhuo
上面回复的最后一句再补充下,也是 createCoroutine 的第一个参数(参数名叫 receiver)
2020-06-18
共2条回复

bennyhuo

2020-06-18

for 循环不会影响this呀,不用传,for所在的位置的this是谁,里面的this就是谁。

这里说的作用域的限制,是说yield只能在GeneratorScope的函数或者扩展函数中调用。for不是函数,跟这个点没有影响。

0
7
bennyhuo
回复
wdmzjgxd
嗯,二者是父子类关系
2020-10-04
共7条回复

学会Kotlin 突破开发语言瓶颈

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

1760 学习 · 481 问题

查看课程