Что такое комбайн-оператор

«Что такое комбайн-оператор» — вопрос из категории Реактивное программирование, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Комбайн-оператор (combine) в Kotlin Flow объединяет несколько потоков (Flow) и создает новый поток, который эмитит значения при обновлении любого из исходных потоков. Он похож на zip, но не ждет всех значений, а реагирует на каждое изменение.

val flow1 = flowOf(1, 2, 3)
val flow2 = flowOf("A", "B", "C")

flow1.combine(flow2) { num, letter ->
    "$num$letter"
}.collect { println(it) } // 1A, 2A, 2B, 3B, 3C

Отличия от zip:

  • combine эмитит при каждом обновлении любого потока
  • zip ждет пары значений из всех потоков