Já používám first
funkce z kotlin toku. Důvod, proč jsem pomocí tohoto first
funkce je, že nemusím sbírat po prvním.
Jestli se nevrátím žádnou logickou hodnotu, to dělá červené zdůraznit, že musím vrátit logickou hodnotu. Co bych měl vrátit? Tam nejsou žádný problém, když jsem se jen vrátit pravda, ale já chci vědět, co 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
}