Ja používam first
funkcia z kotlin toku. Dôvod, prečo som pomocou tohto first
faktom je, že nemusím zbierať po prvý raz.
Ak nechcem vrátiť všetky boolean hodnotu, to je červená zdôrazňujú, že musím vrátiť boolean hodnotu. Čo by som mal vrátiť? Tu nie je žiadny problém, keď som len vrátiť pravda, ale ja chcem, aby vedeli, čo to znamená.
private fun getGroupNameData() {
viewModelScope.launch {
repository.loadGroupsWithFlow()
.buffer()
.first { newList ->
groupData.clear()
newList.forEach { newGroupData ->
groupData[newGroupData.id] = newGroupData.name
}
true // <- what is this boolean value?
}
}
}
first
Kód.
/**
* The terminal operator that returns the first element emitted by the flow matching the given [predicate] and then cancels flow's collection.
* Throws [NoSuchElementException] if the flow has not contained elements matching the [predicate].
*/
public suspend fun <T> Flow<T>.first(predicate: suspend (T) -> Boolean): T {
var result: Any? = NULL
collectWhile {
if (predicate(it)) {
result = it
false
} else {
true
}
}
if (result === NULL) throw NoSuchElementException("Expected at least one element matching the predicate $predicate")
return result as T
}