Kullanıyorum first
kotlin akışından işlev. Bunu kullanmamın nedeni first
işlev, ilk seferden sonra toplamak zorunda olmamam.
Herhangi bir boole değeri döndürmezsem, bir boole değeri döndürmem gerektiğinin altını çizer. Neyi iade etmeliyim? Doğru döndüğümde sorun yok ama ne anlama geldiğini bilmek istiyorum.
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
}