Трубопроводы в Kotlin - PullRequest
0 голосов
/ 08 мая 2020

Из справочника по языку: (Поиск простых чисел)

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)
}

    var cur = numbersFrom(2)
    repeat(10) {
    val prime = cur.receive()
    println(prime)
    cur = filter(cur, prime)
    }
    coroutineContext.cancelChildren() // cancel all children to let main finish

Как фильтр принимает параметр, который не является объектом receiveChannel ??? (от 2-го звонка обв)

1 Ответ

0 голосов
/ 08 мая 2020

Ха-ха, это объект получения канала. Обман.

...