Sobes.tech
Middle

Flowдо кайсы операторлор бар?

sobes.tech AI

AIден жооп

Мынау Flow негизги операторлору, категорияларга бөлүнгөн:

Өзгөртүү:

  • map: Ар бир мааниге өзгөртүү функциясын колдонуу.
  • filter: Предикатка туура келбеген маанилерди фильтрлөө.
  • take: Тек биринчи N маанини алуу.
  • drop: Биринчи N маанини өткөрүп жиберүү.
  • transform: Бир Flowдон экинчи Flowго өтүү үчүн көбүрөөк ийкемдүү оператор, ар бир кирүү маанисинен нөл же көбүрөөк маанини чыгарат.

Кошуу:

  • zip: Эки Flowдун маанилерин паро-жааттык бириктирүү.
  • combine: Эки Flowдун акыркы маанилерин бириктирүү.
  • merge: Бир нече Flowдун маанилерин бириктирүү.

Жылмаюу (Flattening):

  • flattenConcat: Flowдон Flowго бириктирүү, ички Flowлорду кезектешип иштетүү.
  • flattenMerge: Flowдон Flowго бириктирүү, ички Flowлорду параллелдүү иштетүү (конкуренция чектөө менен).

Ыскыратуу иштери:

  • catch: Исключениени кармап, аракет кылуу же катуу маанини кайтаруу.
  • retry: Исключение пайда болгондо Flowду кайра иштетүү.

Терминал операторлору:

  • collect: Бардык маанилерди жыйноо.
  • reduce: Маанилерди бир мааниге кыскартуу.
  • 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) }