Что выведет код Middle Flow, StateFlow и SharedFlow обновлено
Цепочка операторов Flow
Вопрос
Что выведет код? По строке на каждый вывод.
import kotlinx.coroutines.*
import kotlinx.coroutines.flow.*
fun main() = runBlocking {
val result = (1..10).asFlow()
.filter { it % 2 == 0 }
.map { it * it }
.onEach { if (it > 50) println("big $it") }
.take(4)
.toList()
println(result)
println(flowOf("a", "b").zip(flowOf(1, 2, 3)) { s, n -> "$s$n" }.toList())
}
Попробуйте сами
Напишите, что выведет код: каждый вывод с новой строки.
Показать ответ и разбор
Коротко
Код выведет: big 64, [4, 16, 36, 64], [a1, b2]. Чётные 2, 4, 6, 8 превращаются в квадраты 4, 16, 36, 64. onEach печатает только 64. take(4) после четвёртого значения отменяет поток, поэтому 10 уже не обрабатывается. zip делает пары по порядку и заканчивается вместе с более коротким…
Что выведет
big 64
[4, 16, 36, 64]
[a1, b2]
Разбор
Чётные 2, 4, 6, 8 превращаются в квадраты 4, 16, 36, 64. onEach печатает только 64. take(4) после четвёртого значения отменяет поток, поэтому 10 уже не обрабатывается. zip делает пары по порядку и заканчивается вместе с более коротким потоком.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.