Stream transformer
- Dart kursu
- İleri seviye
- Ders 14/83
- 5 dk
StreamTransformer ile dönüştürme öğrenirsin.
StreamTransformer
StreamTransformer, bir stream'u başka bir stream'a dönüştüren soyutlamadır. Her öğeyi map'ler, filtreler, gruplayabilir ya da zamanlamasını değiştirebilir.
En basit dönüşüm .map(fn)'dir: her öğeyi fn ile değiştirir. .where(test) filtreler, .take(n) ilk n öğeyi alır.
Daha karmaşık dönüşümler için StreamTransformer.fromHandlers ile özel transformer yazılır. Bu, akış tabanlı veri işleme hatlarının (pipeline) temelidir.
Pipeline kurma
Birden çok transformer zincirlenebilir: s.where((x) => x > 0).map((x) => x * 2).take(3). Her adım yeni bir stream döndürür; veri sondan geriye doğru akmaz.
Zincirin sonunda bir sonlandırıcı (terminal) opsiyonu gelir: forEach, listen, toList, first. Bu çağrı stream'u tüketir.
Transformer'lar tembel'dir: sonlandırıcı çağrılana kadar veri akmaz. Bu, gereksiz hesabı önler.
Uygulama map ile iki katına çıkar
main'i async yap. var s = Stream.fromIterable([1, 2, 3]); ekle. await s.map((x) => x * 2).forEach(print); ekle.
Başlangıç kodu
void main() {
// async yap; [1,2,3] stream'ı oluştur; map ile iki katına çıkar; forEach ile yazdır
}Örnek çözüm
void main() async {
var s = Stream.fromIterable([1, 2, 3]);
await s.map((x) => x * 2).forEach(print);
}Beklenen çıktı
2 4 6
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Her öğeyi dönüştür
var t = s.____((x) => x * 2);
var t = s.map((x) => x * 2);
Açıklama: map her öğeyi dönüştürür.
2 Hangisi bir StreamTransformer'dır?
- .toList()
- .map(fn) Doğru cevap
- .length
- .toString()
Açıklama: map bir stream'u başka bir stream'a dönüştürür.
3 Operatörleri eşleştir
| Kavram | Anlamı |
|---|---|
.map(fn) |
Dönüştür |
.where(test) |
Filtrele |
.take(n) |
İlk n öğe |
.forEach(fn) |
Tüket |