Middle
Flow-də hansı operatorlar mövcuddur?
sobes.tech Süni İntellekt
AI-dan cavab
Budur Flow-un əsas operatorları, kateqoriyalara görə qruplaşdırılmışdır:
Transformasiya:
map: Hər bir dəyərə transformasiya funksiyası tətbiq edir.filter: Predikatla uyğun olmayan dəyərləri filtr edir.take: Yalnız ilk N dəyəri götürür.drop: İlk N dəyəri atır.transform: Bir Flow-dan digərinə çevirmək üçün daha çevik operator, hər giriş dəyəri üçün sıfır və ya daha çox dəyər yayır.
Birleştirmə:
zip: İki Flow-un dəyərlərini cütlər şəklində birləşdirir.combine: İki Flow-un son dəyərlərini birləşdirir.merge: Bir neçə Flow-un dəyərlərini birləşdirir.
Yumşaltma (Flattening):
flattenConcat: Flow-dan Flow-a, daxili Flow-ları ardıcıl işləyir.flattenMerge: Flow-dan Flow-a, daxili Flow-ları paralel işləyir (konkurrentlik məhdudiyyəti ilə).
İstisna idarəetməsi:
catch: İstisnaları tutar və hərəkət edir və ya fövqəladə dəyər qaytarır.retry: İstisna baş verdikdə Flow-u yenidən cəhd edir.
Terminal operatorlar:
collect: Bütün dəyərləri toplayır.reduce: Flow dəyərlərini birinə toplar.toList: Flow-u siyahıya çevirir.first: Yalnız ilk dəyəri götürür.single: Yeganə dəyəri götürür (əks halda istisna atır).
Zaman operatorları (tez-tez kotlinx.coroutines.flow.operators-dən):
debounce: Yayımdan sonra yalnız fasilə zamanı dəyər yayır.sample: Zaman intervalında son dəyəri yayır.throttle: Dəyərlərin yayılma sürətini məhdudlaşdırır.
map istifadə nümunəsi:
flowOf(1, 2, 3)
.map { it * 2 } // 1, 2, 3-ü 2, 4, 6-ya çevirir
.collect { println(it) }
filter istifadə nümunəsi:
flowOf("apple", "banana", "cherry")
.filter { it.startsWith("b") } // Yalnız "banana" saxlayır
.collect { println(it) }
zip istifadə nümunəsi:
val numbers = flowOf(1, 2, 3)
val letters = flowOf("a", "b", "c")
numbers.zip(letters) { number, letter -> "$number$letter" } // "1a", "2b", "3c" kimi birləşdirir
.collect { println(it) }