Özet - Flow temelleri
- Kotlin kursu
- Orta seviye
- Ders 93/116
- 5 dk
flow, collect ve map'i birleştirerek bir olay akışı yazarsın.
Özet - Flow temelleri
Bu grupta Flow'un soğuk akış doğasını, flow { } kurucusu ve emit'i, collect terminal operatörünü, map/filter ara operatörlerini ve flowOn ile bağlam değiştirmeyi öğrendin.
Şimdi bunları birleştireceksin: bir akış kurup map ile dönüştürecek, ardından filter ve flowOf'u zincirleyeceksin. Bu yapı, Kotlin'de asenkron veri akışının temelidir. İleride StateFlow, SharedFlow ve kanal tabanlı sıcak akışlar bu temelin üzerine eklenecek.
Uygulama flow builder ve map zinciri
fun doubled(): Flow<Int> = flow { ... }.map { ... } tanımla. Gövdede for (i in 1..5) ile emit(i) yapsın; ardından .map { it * 2 } uygulasın. main'i runBlocking ile işaretle; içinde doubled().collect { println(it) } çağrısı yapsın.
Başlangıç kodu
import kotlinx.coroutines.flow.*
import kotlinx.coroutines.runBlocking
// doubled fonksiyonu: flow { } ile 1..5 değerlerini emit et, her değeri ikiyle çarp
// main: doubled akışını topla ve yazdır
fun main() = runBlocking {
// buraya yaz
}Örnek çözüm
fun doubled(): Flow<Int> = flow {
for (i in 1..5) {
emit(i)
}
}.map { it * 2 }
fun main() = runBlocking {
doubled().collect { println(it) }
}Beklenen çıktı
2 4 6 8 10
Uygulama filter ve map ile kareler
fun squares(): Flow<Int> = flowOf(...).filter { ... }.map { ... } tanımla. flowOf(1, 2, 3, 4, 5) ile akışı kur; .filter { it % 2 == 0 } ile çiftleri süz; .map { it * it } ile karelerini al. main'i runBlocking ile işaretle; içinde squares().collect { println(it) } çağrısı yapsın.
Başlangıç kodu
import kotlinx.coroutines.flow.*
import kotlinx.coroutines.runBlocking
// squares fonksiyonu: flowOf ile akış kur, çiftleri süz ve karelerini al
// main: squares akışını topla ve yazdır
fun main() = runBlocking {
// buraya yaz
}Örnek çözüm
fun squares(): Flow<Int> = flowOf(1, 2, 3, 4, 5)
.filter { it % 2 == 0 }
.map { it * it }
fun main() = runBlocking {
squares().collect { println(it) }
}Beklenen çıktı
4 16
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Aşağıdakilerden hangisi bir terminal operatördür?
- map
- filter
- flowOn
- collect Doğru cevap
Açıklama: collect terminal'dir; akışı çalıştırır ve değerleri tüketir.
2 Flow kavramlarını eşle
| Kavram | Anlamı |
|---|---|
flow { } |
Akış kurucu |
emit |
Değer gönderir |
collect |
Tüketici |
flowOn |
Bağlam belirler |