我正在研究Kotlin中的coroutines
,从这样的Fibonacci序列开始:
import kotlin.coroutines.experimental.buildSequence
fun main(args: Array<String>) {
val fibo = buildSequence {
yield(0)
var a = 0
var b = 1
while (true) {
yield(b)
b = a + b
a = b - a
}
}
fibo.take(5).forEach { println(it) }
}
我正在使用IntelliJ IDEA,当上述代码在由New Project
- &gt;创建的项目中运行时Kotlin
- &gt; Kotlin(JVM)
,它工作正常。
当代码在Maven项目中运行时,从原型org.jetbrains.kotlin:kotlin-archetype-jvm
kotlin-archetype-jvm:1.1.2-4
创建它会抛出KotlinNullPointerException
。
线程“main”中的异常kotlin.KotlinNullPointerException at kotlin.coroutines.experimental.SequenceBuilderIterator.yield(SequenceBuilder.kt:163) 在com.github.fdudannychen.HelloKt $ main $ fibo $ 1.doResume(Hello.kt:7) 在 kotlin.coroutines.experimental.jvm.internal.CoroutineImpl.resume(CoroutineImpl.kt:54) 在 kotlin.coroutines.experimental.SequenceBuilderIterator.hasNext(SequenceBuilder.kt:128) 在kotlin.sequences.TakeSequence $ iterator $ 1.hasNext(Sequences.kt:348) 在com.github.fdudannychen.HelloKt.main(Hello.kt:22)
this article中的步骤无助于解决问题。我不知道为什么它不起作用。我错过了什么吗?