Я видел проект на Git,
В MainVM filterInstace является слиянием и используется вместо if следующим образом.
Код: Выделить всё
private fun SharedFlow.toPartialStateChangeFlow(): Flow =
merge(
// users change
merge(
filterIsInstance(),
filterIsInstance()
.filter { viewState.value.error != null },
).toUserChangeFlow(),
// refresh change
filterIsInstance()
.toRefreshChangeFlow(),
// remove user change
filterIsInstance()
.toRemoveUserChangeFlow(),
)
Код: Выделить всё
private fun SharedFlow.toPartialStateChangeFlow(): Flow =
flatMapLatest { intent ->
when (intent) {
is ViewIntent.Initial || (ViewIntent.Retry && filter { viewState.value.error != null })
-> toUserChangeFlow()
is ViewIntent.Refresh -> toRefreshChangeFlow()
is ViewIntent.RemoveUser -> toRemoveUserChangeFlow()
else -> Unit
}
}
Я не знаю достоинств такого выражения.
Подробнее здесь: https://stackoverflow.com/questions/790 ... ad-of-when
Мобильная версия