Не удается разрешить api производителя
Я изучаю сопрограммы Kotlin. Я следовал руководству, в котором этот код используется для объяснения API-интерфейса производителя-потребителя сопрограмм:
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.channels.Channel
import kotlinx.coroutines.launch
import kotlinx.coroutines.channels.*
fun produceNumbers() : ProducerJob<Int> = produce {
for (x in 1..5) {
println("send $x")
channel.send(x)
}
}
Мой build.gradle:
plugins {
id 'java'
id 'org.jetbrains.kotlin.jvm' version '1.3.41'
}
group 'com.mm'
version '1.0-SNAPSHOT'
sourceCompatibility = 1.8
repositories {
mavenCentral()
jcenter()
}
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.1.1"
testCompile group: 'junit', name: 'junit', version: '4.12'
}
compileKotlin {
kotlinOptions.jvmTarget = "1.8"
}
compileTestKotlin {
kotlinOptions.jvmTarget = "1.8"
}
Я попробовал код в своей Intellij IDE. Но я постоянно получаю ошибку компилятора "Неразрешенная ссылка ProducerJob" и "Неразрешенная ссылка производит", почему это так?
1 ответ
Решение
Ты нуждаешься в CoroutineScope
бежать produce
в этом. Возможно, вы следуете довольно устаревшему руководству.
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.channels.produce
@ExperimentalCoroutinesApi
fun CoroutineScope.produceNumbers() = produce {
for (x in 1..5) {
println("send $x")
send(x)
}
}