Stream transformation
- Dart kursu
- Orta seviye
- Ders 66/116
- 5 dk
map ve where ile Stream dönüştürme öğrenirsin.
Stream dönüşümü
Stream'ler map ve where metotlarıyla dönüştürülebilir. map her olayı dönüştürür; where koşula uyan olayları geçirir. Bu metotlar yeni bir Stream döndürür.
Örnek: var filtered = stream.where((n) => n.isEven);. Bu, yalnızca çift sayı olaylarını geçirir. var doubled = filtered.map((n) => n * 2); ise her olayı ikiye katlar.
Dönüştürülmüş Stream'i dinlemek için await for kullanırsın. Zincirleme mümkündür: stream.where(...).map(...). Her dönüşüm tembel çalışır.
Zincirleme dönüşüm
Stream dönüşümleri zincirlenebilir. stream.where(...).map(...) yazarak tek akışta birden çok dönüşüm yaparsın. Her dönüşüm bir sonrakının girdisi olur.
Örnek: [1, 2, 3, 4] akışı üzerinde önce where ile çiftleri al (2, 4), sonra map ile ikiye katla (4, 8). Sonuç: 4, 8. await for ile dinlersin.
Zincirleme, veriyi adım adım işlemenin okunaklı yoludur. Her adım tek bir sorumluluğa sahiptir; kod anlaşılır kalır.
Uygulama Stream'i süz ve dönüştür
void main() async zaten yazılı. Stream.fromIterable([1, 2, 3, 4]) zaten oluşturuldu. Önce .where((n) => n.isEven) ile çiftleri süz, sonra .map((n) => n * 2) ile ikiye katla. await for ile sonuçu dinle ve print ile yazdır.
Başlangıç kodu
void main() async {
var stream = Stream.fromIterable([1, 2, 3, 4]);
// .where ile çiftleri süz, .map ile ikiye katla, await for ile yazdır
}Örnek çözüm
void main() async {
var stream = Stream.fromIterable([1, 2, 3, 4]);
var filtered = stream.where((n) => n.isEven);
var doubled = filtered.map((n) => n * 2);
await for (var n in doubled) {
print(n);
}
}Beklenen çıktı
4 8
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Dönüşüm metotlarını eşleştir
| Kavram | Anlamı |
|---|---|
.where((n) => n.isEven) |
Çiftleri süzme |
.map((n) => n * 2) |
İkiye katlama |
await for |
Sonucu dinleme |
print(n) |
Olayı yazdırma |
2 stream.where(...) ne döndürür?
var s = Stream.fromIterable([1, 2, 3]);
var f = s.where((n) => n.isEven);- Bir liste
- Yeni bir Stream Doğru cevap
- Bir Future
- void
Açıklama: where yeni bir Stream döndürür.
3 map çağrısı
var filtered = stream.where((n) => n.isEven);
var doubled = filtered.____((n) => n * 2);
var filtered = stream.where((n) => n.isEven);
var doubled = filtered.map((n) => n * 2);
Açıklama: map her olayı dönüştürür.