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) }