#kotlin #kotlin-coroutines
Вопрос:
В этом примере, https://kotlinlang.org/docs/channels.html#prime-numbers-with-pipeline
Нам даны две функции:
fun CoroutineScope.numbersFrom(start: Int) = produce<Int> {
var x = start
while (true) send(x ) // infinite stream of integers from start
}
fun CoroutineScope.filter(numbers: ReceiveChannel<Int>, prime: Int) = produce<Int> {
for (x in numbers) if (x % prime != 0) send(x)
}
Однако пример не компилируется
numbersFrom(2) -> filter(2) -> filter(3) -> filter(5) -> filter(7)
Ошибка компиляции, которую я получаю, такова Expecting comma or ')'
Есть ли импорт, который я забываю использовать. Импорт, который у меня есть до сих пор, таков
import kotlinx.coroutines.channels.ReceiveChannel
import kotlinx.coroutines.channels.produce
Комментарии:
1. Эта строка не является кодом котлина, это просто «представление» того, что произойдет в канале (функция фильтра будет запускаться по цепочке каждый раз, когда значение поступает в канал). Фактическим примером кода является блок под ним (
var cur = numbersFrom(2)n repeat(10) ...
)2. О, я понимаю. Было бы здорово иметь возможность это сделать. Например, он доступен в Scala