Sobes.tech
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) }