Middle
Flowda qanday operatorlar mavjud?
sobes.tech AI
AIdan javob
Mana asosiy Flow operatorlari, kategoriyalarga bo'lingan:
Transformatsiya:
map: Har bir qiymatga transformatsiya funksiyasini qo'llaydi.filter: Predikatga mos kelmaydigan qiymatlarni filtrlaydi.take: Faqat birinchi N qiymatni oladi.drop: Birinchi N qiymatni o'tkazib yuboradi.transform: Bir Flow'dan boshqasiga o'tish uchun yanada moslashuvchan operator, har bir kirish qiymati uchun nol yoki undan ko'p qiymatlarni chiqaradi.
Kombinatsiya:
zip: Ikki Flow qiymatlarini juftlik bilan birlashtiradi.combine: Ikki Flow ning oxirgi qiymatlarini birlashtiradi.merge: Bir nechta Flow qiymatlarini bitta qilib birlashtiradi.
Yumshatish (Flattening):
flattenConcat: Flow'dan Flow'ga, ichki Flow'larni ketma-ket ishlov berish.flattenMerge: Flow'dan Flow'ga, ichki Flow'larni parallel ishlov berish (konkurentlik cheklov bilan).
Xatoliklarni boshqarish:
catch: Xatoliklarni ushlaydi va harakat qiladi yoki favqulodda qiymatni qaytaradi.retry: Xatolik yuz berganda Flow'ni takrorlaydi.
Terminal operatorlar:
collect: Barcha qiymatlarni yig'adi.reduce: Flow qiymatlarini bitta qiymatga yig'adi.toList: Flow'ni ro'yxatga aylantiradi.first: Faqat birinchi qiymatni oladi.single: Yagona qiymatni oladi (agar qiymatlar ko'proq bo'lsa, xato chiqaradi).
Vaqt operatorlari (ko'pincha kotlinx.coroutines.flow.operators dan):
debounce: Faqat uzilishdan keyin qiymatni chiqaradi.sample: Vaqt oralig'ida oxirgi qiymatni chiqaradi.throttle: Qiymatlarning chiqarilish tezligini cheklaydi.
map dan foydalanish misoli:
flowOf(1, 2, 3)
.map { it * 2 } // 1, 2, 3 ni 2, 4, 6 ga o'zgartiradi
.collect { println(it) }
filter dan foydalanish misoli:
flowOf("apple", "banana", "cherry")
.filter { it.startsWith("b") } // Faqat "banana" qoldiradi
.collect { println(it) }
zip dan foydalanish misoli:
val numbers = flowOf(1, 2, 3)
val letters = flowOf("a", "b", "c")
numbers.zip(letters) { number, letter -> "$number$letter" } // "1a", "2b", "3c" ga birlashtiradi
.collect { println(it) }