0Pricing
Dart Academy · Lektion

fold, reduce und expand

Aggregieren und glätten Sie Iterables

fold, reduce und expand ist eine kostenlose Dart Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Dart Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Dart Academy-Kurs umfasst insgesamt 4 Lektionen.

Eine Collection aggregieren

Oft möchten Sie eine ganze Liste zu einem Wert zusammenfassen, etwa zu einer Summe oder einem Maximum. Dart bietet dafür fold und reduce. 🧮

reduce kennenlernen

reduce kombiniert die Elemente paarweise mithilfe Ihrer Funktion. Es beginnt mit dem ersten Element, daher darf die Liste nicht leer sein.

var sum = [1, 2, 3, 4].reduce((a, b) => a + b);
print(sum); // 10

reduce führt ein Ergebnis weiter

Bei jedem Schritt werden das bisherige Ergebnis und das nächste Element übergeben. Stellen Sie sich a als Akkumulator vor, der während des Durchlaufs wächst.

var max = [3, 9, 2].reduce((a, b) => a > b ? a : b);
print(max); // 9

Die Falle der leeren Liste

Der Aufruf von reduce auf einer leeren Liste löst einen StateError aus. Wenn eine Liste leer sein könnte, verwenden Sie stattdessen fold.

fold kennenlernen

fold ähnelt reduce, aber Sie übergeben einen Startwert. Dieser Startwert legt den Ergebnistyp fest und behandelt leere Listen sicher.

var total = [1, 2, 3].fold(0, (a, b) => a + b);
print(total); // 6

fold kann den Typ ändern

Da der Startwert den Typ festlegt, kann fold eine Liste von ints in einen String, eine Map oder jeden anderen benötigten Typ umwandeln.

var joined = [1, 2, 3].fold('', (a, b) => '$a$b');
print(joined); // 123

fold ist bei leeren Listen sicher

Bei einer leeren Liste gibt fold einfach den Startwert zurück. Kein Absturz und kein Sonderfall, den Sie sich merken müssen.

var s = <int>[].fold(0, (a, b) => a + b);
print(s); // 0

reduce im Vergleich zu fold

Verwenden Sie reduce für eine schnelle Kombination desselben Typs in einer nicht leeren Liste. Greifen Sie zu fold, wenn Sie einen Startwert oder einen neuen Ergebnistyp benötigen.

expand kennenlernen

expand bildet jedes Element auf ein Iterable ab und flacht anschließend alle Ergebnisse zu einem einzigen Datenstrom von Werten ab. Es ist map plus flatten.

var r = [1, 2].expand((n) => [n, n * 10]);
print(r.toList()); // [1, 10, 2, 20]

Verschachtelte Listen abflachen

Eine häufige Aufgabe für expand ist, eine Liste von Listen mit einem einzigen sauberen Aufruf in eine flache Liste umzuwandeln.

var flat = [[1, 2], [3, 4]].expand((x) => x);
print(flat.toList()); // [1, 2, 3, 4]

Die drei Methoden verketten

Diese Methoden lassen sich hervorragend kombinieren. Sie können mit expand abflachen und anschließend mit fold aggregieren – in einer einzigen gut lesbaren Pipeline.

var t = [[1, 2], [3]].expand((x) => x).fold(0, (a, b) => a + b);
print(t); // 6

Schnelltest

Wählen Sie das richtige Werkzeug für eine leere-sichere Summe.

Zusammenfassung

reduce kombiniert, fold kombiniert mit einem Startwert und expand flacht ab. Zusammen aggregieren sie jede Collection mühelos. 🎉

Häufig gestellte Fragen

Ist die Lektion „fold, reduce und expand“ kostenlos?

Ja — der vollständige Text von „fold, reduce und expand“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Dart Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Dart Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „fold, reduce und expand“?

Aggregieren und glätten Sie Iterables Du übst Dart Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Dart Academy zu starten?

Keine Vorkenntnisse erforderlich. Dart Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.

Wie lange dauert die Lektion „fold, reduce und expand“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Dart Academy-Lektion Code schreiben und ausführen?

Ja. Jede Dart Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Funktionen höherer Ordnung und Currying
  2. fold, reduce und expand
  3. Faule Iterables und Generatoren mit sync*
  4. Zusammensetzen reiner Funktionspipelines
← Zurück zu Dart Academy