一点小建议

来源: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回答

bennyhuo

2022-03-13

感谢同学的建议!

0
0

学会Kotlin 突破开发语言瓶颈

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

1760 学习 · 481 问题

查看课程