Appearance
Kapitel 10: Funktionen fortgeschritten
10.1 Funktionsdefinition und -aufruf
dart
// Grundlegende Funktion
int add(int a, int b) {
return a + b;
}
void main() {
print(add(1, 2)); // 3
}10.2 Funktionsparametertypen
Erforderliche Parameter
dart
void gruß(String name) {
print('Hallo ' + name);
}Optionale Positionsparameter
dart
void gruß([String? name, int alter = 0]) {
print('Hallo ' + (name ?? 'Gast') + ', Alter: ' + alter.toString());
}
void main() {
gruß(); // Hallo Gast, Alter: 0
gruß('Alice'); // Hallo Alice, Alter: 0
gruß('Bob', 25); // Hallo Bob, Alter: 25
}Optionale Benannte Parameter
dart
void gruß({String? name, int alter = 0}) {
print('Hallo ' + (name ?? 'Gast') + ', Alter: ' + alter.toString());
}
void main() {
gruß(); // Hallo Gast, Alter: 0
gruß(name: 'Alice'); // Hallo Alice, Alter: 0
gruß(alter: 25, name: 'Bob'); // Hallo Bob, Alter: 25
}10.3 Anonyme Funktionen
dart
void main() {
List<int> zahlen = [1, 2, 3];
// Anonyme Funktion mit forEach
zahlen.forEach((zahl) {
print(zahl);
});
}10.4 Pfeilfunktionen
dart
void main() {
// Pfeilfunktion (nur einzelner Ausdruck)
List<int> zahlen = [1, 2, 3];
zahlen.forEach((zahl) => print(zahl));
// Einfache Pfeilfunktion
int add(int a, int b) => a + b;
print(add(1, 2)); // 3
}10.5 Höhere Funktionen
dart
void main() {
List<int> zahlen = [1, 2, 3, 4, 5];
// map
List<int> verdoppelt = zahlen.map((zahl) => zahl * 2).toList();
print(verdoppelt); // [2, 4, 6, 8, 10]
// where (Filtern)
List<int> gerade = zahlen.where((zahl) => zahl % 2 == 0).toList();
print(gerade); // [2, 4]
// reduce
int summe = zahlen.reduce((wert, element) => wert + element);
print(summe); // 15
}10.6 Closures
dart
Function zähler() {
int count = 0;
return () {
count++;
return count;
};
}
void main() {
var increment = zähler();
print(increment()); // 1
print(increment()); // 2
print(increment()); // 3
}10.7 Praxisbeispiel
dart
// Datenverarbeitung mit höheren Funktionen
void main() {
List<Map<String, dynamic>> studenten = [
{'name': 'Alice', 'note': 85},
{'name': 'Bob', 'note': 92},
{'name': 'Charlie', 'note': 78}
];
// Hohe Noten filtern
var hoheNoten = studenten.where((s) => s['note'] >= 80).toList();
print(hoheNoten);
// Durchschnittsnote berechnen
double durchschnitt = studenten.map((s) => s['note']).reduce((a, b) => a + b) / studenten.length;
print('Durchschnitt: ' + durchschnitt.toString());
}