Sobes.tech
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) }