Я изучаю сопрограммы Kotlin.
Код А из художественного .
Мне очень странно, поэтому автор использует сложную структуру. Я думаю, что Код B может выполнять ту же работу простым способом.
Код A
class MainViewModel(private val repository: TitleRepository) : ViewModel() {
...
private val _spinner = MutableLiveData<Boolean>(false)
/**
* Show a loading spinner if true
*/
val spinner: LiveData<Boolean>
get() = _spinner
...
private fun launchDataLoad(block: suspend () -> Unit): Unit {
viewModelScope.launch {
try {
_spinner.value = true
block()
} catch (error: TitleRefreshError) {
_snackBar.value = error.message
} finally {
_spinner.value = false
}
}
}
}
Код B
class MainViewModel(private val repository: TitleRepository) : ViewModel() {
...
val spinner = MutableLiveData<Boolean>(false)
...
private fun launchDataLoad(block: suspend () -> Unit): Unit {
viewModelScope.launch {
try {
spinner.value = true
block()
} catch (error: TitleRefreshError) {
_snackBar.value = error.message
} finally {
spinner.value = false
}
}
}
}