0Pricing
Kotlin Academy · Ders

Flow İşleçleri: map, filter, transform ve take

Flow emisyonlarını dönüştürmek ve sınırlamak için ara işleçleri uygulayın.

Flow İşleçleri: map, filter, transform ve take, CoddyKit'te ücretsiz bir Kotlin Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Kotlin Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Kotlin Academy kursu toplamda 4 dersten oluşur.

Flow Nedir

Bir Flow, soğuk ve eşzamansız bir akıştır. map, filter ve transform gibi ara işleçler tembeldir — yalnızca toplandıklarında çalışırlar.

import kotlinx.coroutines.*
import kotlinx.coroutines.flow.*
fun numbers(): Flow<Int> = flow {
    repeat(5) { emit(it + 1) }
}
fun main() = runBlocking {
    numbers().collect { println(it) }
}

map İşleci

map, yayımlanan her değeri dönüştürür. Tembel biçimde uygulanan bire bir dönüşümdür.

import kotlinx.coroutines.*
import kotlinx.coroutines.flow.*
fun main() = runBlocking {
    (1..5).asFlow()
        .map { it * it }
        .collect { println(it) } // 1 4 9 16 25
}

filter İşleci

filter, yalnızca koşulla eşleşen öğeleri geçirir, geri kalanları eler.

import kotlinx.coroutines.*
import kotlinx.coroutines.flow.*
fun main() = runBlocking {
    (1..10).asFlow()
        .filter { it % 2 == 0 }
        .collect { println(it) } // 2 4 6 8 10
}

transform İşleci

transform en genel işleçtir: her girdi öğesi için sıfır, bir veya birden çok değer yayımlayabilirsiniz.

import kotlinx.coroutines.*
import kotlinx.coroutines.flow.*
fun main() = runBlocking {
    (1..3).asFlow()
        .transform { n ->
            emit("Item $n")
            emit("Done $n")
        }
        .collect { println(it) }
}

take İşleci

take(n) yalnızca ilk n öğeyi alır ve ardından üst akışı iptal eder.

import kotlinx.coroutines.*
import kotlinx.coroutines.flow.*
fun main() = runBlocking {
    flow {
        repeat(100) { emit(it) }
    }.take(3)
     .collect { println(it) } // 0 1 2
}

takeWhile ve dropWhile

takeWhile, koşul doğru olduğu sürece öğeleri alır; dropWhile, koşul yanlış olana kadar öğeleri eler.

import kotlinx.coroutines.*
import kotlinx.coroutines.flow.*
fun main() = runBlocking {
    (1..10).asFlow()
        .takeWhile { it < 5 }
        .collect { println(it) } // 1 2 3 4

    (1..10).asFlow()
        .dropWhile { it < 5 }
        .collect { println(it) } // 5 6 7 8 9 10
}

İşleçleri Zincirleme

İşleçler birleştirilebilir: her işleç yeni bir Flow döndürür ve bildirimsel işlem hatlarının oluşturulmasını sağlar.

import kotlinx.coroutines.*
import kotlinx.coroutines.flow.*
fun main() = runBlocking {
    (1..20).asFlow()
        .filter { it % 3 == 0 }
        .map { it * 2 }
        .take(4)
        .collect { println(it) } // 6 12 18 24
}

mapNotNull

mapNotNull, null sonuçlarını tek adımda dönüştürür ve eler — map + filter { it != null } ile eşdeğerdir.

import kotlinx.coroutines.*
import kotlinx.coroutines.flow.*
fun main() = runBlocking {
    flowOf("1", "two", "3", "four", "5")
        .mapNotNull { it.toIntOrNull() }
        .collect { println(it) } // 1 3 5
}

flatMapConcat

flatMapConcat, her öğeyi bir akışa dönüştürür ve sonuçları sıralı olarak birleştirir.

import kotlinx.coroutines.*
import kotlinx.coroutines.flow.*
fun main() = runBlocking {
    (1..3).asFlow()
        .flatMapConcat { n -> flowOf("$n-a", "$n-b") }
        .collect { println(it) }
}

Yan Etkiler için onEach

onEach, akışı değiştirmeden her öğe üzerinde bir yan etki gerçekleştirir — işlem hattında günlükleme veya analiz için uygundur.

import kotlinx.coroutines.*
import kotlinx.coroutines.flow.*
fun main() = runBlocking {
    (1..5).asFlow()
        .onEach { println("Processing: $it") }
        .filter { it % 2 == 0 }
        .collect { println("Collected: $it") }
}

Flow Soğuk Akıştır

collect için yapılan her çağrı akışı baştan başlatır. Bir sonlandırıcı işleç toplamayı tetikleyene kadar hiçbir öğe yayımlanmaz veya dönüştürülmez.

import kotlinx.coroutines.*
import kotlinx.coroutines.flow.*
fun main() = runBlocking {
    val flow = (1..3).asFlow().map { println("map $it"); it * 2 }
    println("Before collect")
    flow.collect { println("got $it") }
    println("Second collect:")
    flow.collect { println("got $it") }  // runs again
}

Hızlı Kontrol

Üst akıştaki her öğe için sıfır, bir veya birden çok değer yayımlayan işleç hangisidir?

Özet

map bire bir dönüşüm yapar; filter öğeleri eler; transform istenen sayıda değer yayımlar; take sayıyı sınırlar. Bunları bildirimsel olarak zincirleyin — akış soğuktur ve yalnızca toplandığında çalışır.

Sıkça Sorulan Sorular

“Flow İşleçleri: map, filter, transform ve take” dersi ücretsiz mi?

Evet — “Flow İşleçleri: map, filter, transform ve take” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Kotlin Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Kotlin Academy kursu toplamda 4 dersten oluşur.

“Flow İşleçleri: map, filter, transform ve take” dersinde ne öğreneceğim?

Flow emisyonlarını dönüştürmek ve sınırlamak için ara işleçleri uygulayın. Kotlin Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Kotlin Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Kotlin Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.

“Flow İşleçleri: map, filter, transform ve take” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Kotlin Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Kotlin Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Flow İşleçleri: map, filter, transform ve take
  2. catch ve onCompletion: Flow'da Hata İşleme
  3. combine ve zip: Birden Çok Flow'u Birleştirme
  4. flowOn ve buffer: Bağlam ve Geri Basınç
← Kotlin Academy Sayfasına Dön