Używam first
funkcja z przepływu kotlina. Powodem, dla którego używam to first
funkcja w tym, że nie muszę zbierać pieniądze po raz pierwszy.
Jeśli ja nie zwracam żadnego logicznego znaczenia, to sprawia, że czerwone podkreślenie tego, że muszę zwrócić wartość logiczną. Co powinienem zwrócić? Nie ma problemu, gdy tylko zwracam prawdę, ale chcę wiedzieć, co to znaczy.
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
Kod.
/**
* 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
}