combineTransform

@JvmName(name = "flowCombineTransform")
fun <T1, T2, R> Flow<T1>.combineTransform(flow: Flow<T2>, transform: suspend FlowCollector<R>.(T1, T2) -> Unit): Flow<R>

Returns a Flow whose values are generated by transform function that process the most recently emitted values by each flow.

The receiver of the transform is FlowCollector and thus transform is a generic function that may transform emitted element, skip it or emit it multiple times.

Its usage can be demonstrated with the following example:

val flow = requestFlow()
val flow2 = searchEngineFlow()
flow.combineTransform(flow2) { request, searchEngine ->
emit("Downloading in progress")
val result = download(request, searchEngine)
emit(result)
}

fun <T1, T2, R> combineTransform(flow: Flow<T1>, flow2: Flow<T2>, transform: suspend FlowCollector<R>.(T1, T2) -> Unit): Flow<R>

Returns a Flow whose values are generated by transform function that process the most recently emitted values by each flow.

The receiver of the transform is FlowCollector and thus transform is a generic function that may transform emitted element, skip it or emit it multiple times.

Its usage can be demonstrated with the following example:

val flow = requestFlow()
val flow2 = searchEngineFlow()
combineTransform(flow, flow2) { request, searchEngine ->
emit("Downloading in progress")
val result = download(request, searchEngine)
emit(result)
}

fun <T1, T2, T3, R> combineTransform(flow: Flow<T1>, flow2: Flow<T2>, flow3: Flow<T3>, transform: suspend FlowCollector<R>.(T1, T2, T3) -> Unit): Flow<R>
fun <T1, T2, T3, T4, R> combineTransform(flow: Flow<T1>, flow2: Flow<T2>, flow3: Flow<T3>, flow4: Flow<T4>, transform: suspend FlowCollector<R>.(T1, T2, T3, T4) -> Unit): Flow<R>
fun <T1, T2, T3, T4, T5, R> combineTransform(flow: Flow<T1>, flow2: Flow<T2>, flow3: Flow<T3>, flow4: Flow<T4>, flow5: Flow<T5>, transform: suspend FlowCollector<R>.(T1, T2, T3, T4, T5) -> Unit): Flow<R>
inline fun <T, R> combineTransform(vararg flows: Flow<T>, crossinline transform: suspend FlowCollector<R>.(Array<T>) -> Unit): Flow<R>
inline fun <T, R> combineTransform(flows: Iterable<Flow<T>>, crossinline transform: suspend FlowCollector<R>.(Array<T>) -> Unit): Flow<R>

Returns a Flow whose values are generated by transform function that process the most recently emitted values by each flow.

The receiver of the transform is FlowCollector and thus transform is a generic function that may transform emitted element, skip it or emit it multiple times.