Middle
Ի՞նչ օպերատորներ կան Flow-ում։
sobes.tech AI
Պատասխան AI-ից
Ահա Flow-ի հիմնական օպերատորները, դասակարգված կատեգորիաներով:
Փոխակերպում:
map: Կիրառում է փոխարկման ֆունկցիան յուրաքանչյուր արժեքի վրա:filter: Ֆիլտրում է արժեքները, որոնք չեն համապատասխանում կանխատեսմանը:take: Լավում է միայն առաջին N արժեքները:drop: Դադարում է առաջին N արժեքները:transform: Ավելի ճկուն օպերատոր է, որը փոխում է մեկ Flow-ից մյուսը, արտանետելով մեկ կամ ավելի արժեքներ յուրաքանչյուր մուտքային արժեքից:
Կոմբինացիա:
zip: Զուգահեռորեն միավորում է երկու Flow արժեքները:combine: Կոմբայնավորում է երկու Flow վերջին արժեքները:merge: Միավորում է մի քանի Flow արժեքները մեկում:
Հարթեցում (Flattening):
flattenConcat: Միավորում է Flow-ներից Flow-ներ, հերթականորեն մշակելով ներքին Flow-ները:flattenMerge: Միավորում է Flow-ներից Flow-ներ, միաժամանակ մշակելով ներքին Flow-ները (համաժամկետության սահմանափակմամբ):
Ազատում արտահայտություններից:
catch: Հավաքում է արտահայտություններ և կատարում գործողություն կամ վերադարձնում սխալի արժեք:retry: Փորձում է կրկնել Flow-ը արտահայտության դեպքում:
Տերմինալ օպերատորներ:
collect: Ժամանակակից բոլոր արժեքները հավաքում է Flow-ից:reduce: Ակումբավորում է Flow արժեքները մեկում:toList: Փոխում է Flow-ը ցանկի:first: Վերցնում է միայն առաջին արժեքը:single: Վերցնում է միայն մեկ արժեք (արտահանի արտահայտություն, եթե արժեքների ավելի քան մեկը):
Ժամանակի օպերատորներ (հաճախ kotlinx.coroutines.flow.operators-ից):
debounce: Ուղարկում է արժեքը միայն դադարից հետո:sample: Ուղարկում է վերջին արժեքը ժամանակային միջակայքով:throttle: Սահմանափակում է արժեքների արտանետման արագությունը:
Օրինակ map-ի օգտագործման համար:
flowOf(1, 2, 3)
.map { it * 2 } // Փոխում է 1, 2, 3-երը 2, 4, 6-եր:
.collect { println(it) }
Օրինակ filter-ի օգտագործման համար:
flowOf("apple", "banana", "cherry")
.filter { it.startsWith("b") } // Ֆիլտրում է, թողնելով միայն "banana":
.collect { println(it) }
Օրինակ zip-ի օգտագործման համար:
val numbers = flowOf(1, 2, 3)
val letters = flowOf("a", "b", "c")
numbers.zip(letters) { number, letter -> "$number$letter" } // Միավորում է "1a", "2b", "3c":
.collect { println(it) }