一、使用Kotlin协程,写一个斐波拉契序列
package cn.kotliner.coroutine.sequence
import kotlin.coroutines.experimental.buildSequence
/**
* @author:wangdong
* @description:
*/
fun main(args: Array<String>) {
for (i in fibonacci){
println(i)
//打印的时候,调Next方法,next方法把我们刚刚设置给next的方法返回
//直到循环厕所超过100的时候,跳出
if (i > 100)break
}
}
/**
* 基于协程API构建
* 斐波拉契
* 这个玩意是无穷尽的
*/
val fibonacci = buildSequence {
yield(1)
//调这个值的时候,先把1赋给next
var cur = 1
var next = 1
while (true){
yield(next)
//协程被挂起
val tmp = cur + next
cur = next
next = tmp
}
}
如果不是很理解斐波拉契序列的话,请参考下以下的维基百科:
斐波拉契序列