A
Size: a a a
A
AM
ensureActive
лучше yield
, если вам действительно не нужно переключать контекст перед обработкой каждого элемента.A
ensureActive
лучше yield
, если вам действительно не нужно переключать контекст перед обработкой каждого элемента.VT
yield
, и ensureActive
один и тот же механизм внутри используют, либо две нетривиально связанные через канал корутины на одном однопоточном диспатчереVT
A
A
VT
VT
ensureActive
резолвится в экстеншн на runBlocking
%)VT
VT
kotlin.coroutines.coroutineContext.ensureActive()
A
ensureActive
резолвится в экстеншн на runBlocking
%)A
VT
KD
flatMapIndexed
? 🤔IS
flatMapIndexed
? 🤔KD
AL
inline fun <T, R> Iterable<T>.flatMapIndexed(transform: (index: Int, T) -> Iterable<R>): List<R> {
return flatMapIndexedTo(ArrayList(), transform)
}
inline fun <T, R, C : MutableCollection<in R>> Iterable<T>.flatMapIndexedTo(destination: C, transform: (index: Int, T) -> Iterable<R>): C {
for ((index, element) in withIndex()) {
val list = transform(index, element)
destination.addAll(list)
}
return destination
}
listOf(4, 5, 5).flatMapIndexed { index, i -> listOf(index * index + index, i * i + i) }
KD
inline fun <T, R> Iterable<T>.flatMapIndexed(transform: (index: Int, T) -> Iterable<R>): List<R> {
return flatMapIndexedTo(ArrayList(), transform)
}
inline fun <T, R, C : MutableCollection<in R>> Iterable<T>.flatMapIndexedTo(destination: C, transform: (index: Int, T) -> Iterable<R>): C {
for ((index, element) in withIndex()) {
val list = transform(index, element)
destination.addAll(list)
}
return destination
}
listOf(4, 5, 5).flatMapIndexed { index, i -> listOf(index * index + index, i * i + i) }
VP
inline fun <T, R> Iterable<T>.flatMapIndexed(transform: (index: Int, T) -> Iterable<R>): List<R> {
return flatMapIndexedTo(ArrayList(), transform)
}
inline fun <T, R, C : MutableCollection<in R>> Iterable<T>.flatMapIndexedTo(destination: C, transform: (index: Int, T) -> Iterable<R>): C {
for ((index, element) in withIndex()) {
val list = transform(index, element)
destination.addAll(list)
}
return destination
}
listOf(4, 5, 5).flatMapIndexed { index, i -> listOf(index * index + index, i * i + i) }
mapIndexed(...).flatten()