myanmarking
03/17/2020, 3:32 PMstreetsofboston
03/17/2020, 3:36 PMval listflow: Flow<List<Int>> = ...
val itemFlow: Flow<Int> = listFlow.flatMapConcat { it.asFlow() }
(not sure if Collection<T>.asFlow() or something similar exists, but it would not be hard to write yourself if it doesn’t)myanmarking
03/17/2020, 3:37 PMfun <T> Flow<List<T>>.flatten(): Flow<T> {
return flow {
collect { values -> values.forEach { value -> emit(value) } }
}
}
araqnid
03/17/2020, 3:59 PMflatMapConcat { it.asFlow() }
or flatMapMerge { it.asFlow() }
— flattening flows is potentially a bit more involved than a plain sequenceDominaezzz
03/17/2020, 4:07 PMtransform
for transforming flows.
fun <T> Flow<List<T>>.flatten(): Flow<T> {
return transform { values ->
values.forEach { value -> emit(value) }
}
}
myanmarking
03/17/2020, 4:09 PMaraqnid
03/17/2020, 4:17 PMtransform
will always apply the transforms in series, not in parallel