asyncExpand
- Dart kursu
- Orta seviye
- Ders 67/116
- 5 dk
asyncExpand ile Stream zincirleme öğrenirsin.
asyncExpand
asyncExpand her Stream olayını yeni bir Stream'a açar ve sonuçları tek akışta birleştirir. Bu, flat map olarak da bilinir. Her olay birden çok alt olay üretebilir.
Örnek: stream.asyncExpand((n) => Stream.fromIterable([n, n * 10])). Burada her sayı iki olay üretir: kendisi ve on katı. [1, 2, 3] girişi [1, 10, 2, 20, 3, 30] çıktısı verir.
asyncExpand her olayı bir Stream'a dönüştürür; bu Stream'ler art arda birleştirilir. Bu, her olaydan birden çok sonuç üretmek için kullanılır.
Flat map mantığı
asyncExpand fonksiyonel programlamadaki flat map işleminin Stream karşılığıdır. Her olay bir Stream'a dönüştürülür; bu Stream'ler art arda birleştirilir.
Örnek: [1, 2, 3] akışı ve (n) => Stream.fromIterable([n, n * 10]) dönüşümü. 1 → [1, 10], 2 → [2, 20], 3 → [3, 30]. Birleşim: [1, 10, 2, 20, 3, 30].
Bu yapı, bir olaydan birden çok sonuç türetmek için kullanılır. Örneğin her kullanıcı için o kullanıcının tüm siparişlerini bir akışta toplamak gibi.
Uygulama asyncExpand ile aç
void main() async zaten yazılı. Stream.fromIterable([1, 2, 3]) zaten oluşturuldu. .asyncExpand((n) => Stream.fromIterable([n, n * 10])) ile her olayı iki elemanlı akışa aç. await for ile sonuçu dinle ve print ile yazdır.
Başlangıç kodu
void main() async {
var stream = Stream.fromIterable([1, 2, 3]);
// .asyncExpand ile her sayıyı iki elemanlı akışa aç, await for ile yazdır
}Örnek çözüm
void main() async {
var stream = Stream.fromIterable([1, 2, 3]);
var expanded = stream.asyncExpand((n) => Stream.fromIterable([n, n * 10]));
await for (var n in expanded) {
print(n);
}
}Beklenen çıktı
1 10 2 20 3 30
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 asyncExpand her olayı neye dönüştürür?
stream.asyncExpand((n) =>
Stream.fromIterable([n, n * 10]));- Bir sayıya
- Bir Future'a
- Yeni bir Stream'a Doğru cevap
- void'e
Açıklama: asyncExpand her olayı yeni bir Stream'a dönüştürür ve birleştirir.
2 asyncExpand parçalarını eşleştir
| Kavram | Anlamı |
|---|---|
(n) => Stream.fromIterable(...) |
Olaydan Stream |
.asyncExpand(...) |
Birleştirme çağrısı |
[1, 10, 2, 20] |
Sonuç akışı |
await for |
Dinleme |
3 asyncExpand çağrısı
var expanded = stream.____((n) => Stream.fromIterable([n, n * 10]));
var expanded = stream.asyncExpand((n) => Stream.fromIterable([n, n * 10]));
Açıklama: asyncExpand her olayı Stream'a açar.