一点小建议
来源:11-7 案例:Generator 与标准库的序列生成器

黃少鴻
2022-03-12
建议稍微改个实做顺序
本次范例的核心是GeneratorIterator这个类,如果能先实做这个类,后续再实做:
fun generator(block: GeneratorFunc): (T) -> Generator {…}
等辅助方法,或许在核心思想(协程)部份大家会更好明白
比如一开始的main方法改成这样:
fun main() {
val seq = GeneratorIterator({
for(i in 0..5) {
yield(it + i)
}
}, 10)
for(j in seq) {
println(j)
}
}
老师的代码范例与章节都密切相关,感觉都是从好的代码裡面精选出来的,也正因为代码质量比较高设计上更加通用,对初学者或许会有更大的负担,所以才建议范例先讲核心再逐步优化
建议顺便题一下参数类型宣告的suspend
本次范例裡面有一段代码:
val coroutineBlock: suspend GeneratorScope<T>.() -> Unit =
{ block(parameter) }
如果交给kotlin自己infer类型的话,coroutineBlock应该是() -> Unit,结果竟然可以通过类型宣告让coroutineBlock就像直接宣告suspend fun一样
建议老师在解说这一段时,可以顺便提一下这件事,比如用show kotlin bytecode稍微解说一下
最后说一下,跟着老师范例自己实现一遍,对于掌握章节核心知识帮助非常大!
写回答
1回答
-
感谢同学的建议!
00
相似问题