Middle
Flow'da hangi operatörler var?
sobes.tech yapay zeka
AI'dan gelen yanıt
İşte kategorilere göre gruplanmış temel Flow operatörleri:
Dönüşüm:
map: Her değere dönüşüm fonksiyonu uygular.filter: Koşula uymayan değerleri filtreler.take: Sadece ilk N değeri alır.drop: İlk N değeri atlar.transform: Bir Flow'dan diğerine dönüşüm için daha esnek bir operatör, her giriş değeri için sıfır veya daha fazla değer yayar.
Birleştirme:
zip: İki Flow'un değerlerini çiftler halinde birleştirir.combine: İki Flow'un en son değerlerini birleştirir.merge: Birden fazla Flow'un değerlerini tek bir Flow'da birleştirir.
Yumuşatma (Flattening):
flattenConcat: Flow'dan Flow'a, iç Flow'ları ardışık olarak işler.flattenMerge: Flow'dan Flow'a, iç Flow'ları paralel olarak işler (eşzamanlılık sınırlandırması ile).
İstisna İşleme:
catch: İstisnaları yakalar ve işlem yapar veya acil durum değeri döner.retry: Bir istisna oluştuğunda Flow'u tekrar dener.
Terminal Operatörler:
collect: Tüm değerleri toplar.reduce: Flow'un değerlerini tek bir değere indirger.toList: Flow'u listeye dönüştürür.first: Sadece ilk değeri alır.single: Tek bir değer alır (birden fazla varsa hata fırlatır).
Zaman Operatörleri (çoğunlukla kotlinx.coroutines.flow.operators'den):
debounce: Yayımda bir duraklama sonrası değeri yayar.sample: Belirli aralıklarla son değeri yayar.throttle: Değerlerin yayılma hızını sınırlar.
map kullanım örneği:
flowOf(1, 2, 3)
.map { it * 2 } // 1, 2, 3'ü 2, 4, 6'ya dönüştürür
.collect { println(it) }
filter kullanım örneği:
flowOf("apple", "banana", "cherry")
.filter { it.startsWith("b") } // Sadece "banana" bırakır
.collect { println(it) }
zip kullanım örneği:
val numbers = flowOf(1, 2, 3)
val letters = flowOf("a", "b", "c")
numbers.zip(letters) { number, letter -> "$number$letter" } // "1a", "2b", "3c" olarak birleştirir
.collect { println(it) }