Middle
Welke operators zijn er in Flow?
sobes.tech AI
Antwoord van AI
Hier zijn de belangrijkste Flow-operatoren, gegroepeerd op categorie:
Transformatie:
map: Past een transformatie functie toe op elke waarde.filter: Filtert waarden die niet voldoen aan de predicate.take: Neemt alleen de eerste N waarden.drop: Slaat de eerste N waarden over.transform: Een flexibelere operator om van de ene Flow naar de andere te transformeren, waarbij nul of meer waarden worden uitgezonden voor elke invoerwaarde.
Combinatie:
zip: Combineert de waarden van twee Flow's in paren.combine: Combineert de laatste waarden van twee Flow's.merge: Combineert waarden uit meerdere Flow's in één.
Vlakmaken (Flattening):
flattenConcat: Combineert Flow van Flow, waarbij de interne Flow's sequentieel worden verwerkt.flattenMerge: Combineert Flow van Flow, waarbij de interne Flow's parallel worden verwerkt (met beperking van concurrency).
Foutafhandeling:
catch: Vangt uitzonderingen op en voert een actie uit of geeft een noodgevalwaarde terug.retry: Probeert de Flow opnieuw bij een uitzondering.
Terminal operators:
collect: Verzamelt alle waarden uit een Flow.reduce: Agregeert de waarden van een Flow tot één.toList: Zet een Flow om in een lijst.first: Neemt alleen de eerste waarde.single: Neemt een enkele waarde (gooit een uitzondering als er meer dan één is).
Tijd operators (vaak uit kotlinx.coroutines.flow.operators):
debounce: Emiteert een waarde alleen na een pauze in de uitzending.sample: Emiteert de laatste waarde over een tijdsinterval.throttle: Beperkt de snelheid van het uitzenden van waarden.
Voorbeeld van gebruik van map:
flowOf(1, 2, 3)
.map { it * 2 } // Transformeert 1, 2, 3 naar 2, 4, 6
.collect { println(it) }
Voorbeeld van gebruik van filter:
flowOf("apple", "banana", "cherry")
.filter { it.startsWith("b") } // Filtert, laat alleen "banana" over
.collect { println(it) }
Voorbeeld van gebruik van zip:
val numbers = flowOf(1, 2, 3)
val letters = flowOf("a", "b", "c")
numbers.zip(letters) { number, letter -> "$number$letter" } // Combineert in "1a", "2b", "3c"
.collect { println(it) }