Anwendung von Callbackfunktionen in Maps - flutter-tutorial-de/dart-programming GitHub Wiki
Ausführbar in dartpad.dev:
void say(String prefix, Map map){ print(map.keys.fold('= $prefix:', (prev, element) => '$prev\n $element: ${map[element]}')); } void main(){ final map = <String, String>{ 'Deutschland' : 'Berlin', 'Italien': 'Rom', 'Österreich': 'Wien' }; say('Land und Hauptstadt', map); map.forEach((key, value) => print('Die Hauptstadt von $key ist $value.')); map.removeWhere((key, value) => value.contains('e')); say('Ohne Hauptstädte mit "e"', map); }
-
map.keys.fold('= $prefix:', (prev, element) => '$prev\n $element: ${map[element]}')
-
map.keys
liefert eine Liste mit allen Schlüsseln. - Diese Schlüssel werden mit der Methode
fold
ausgewertet: Es wird ein String zusammengesetzt, der alle Schlüssel-Wert-Paare als String zusammensetzt. - Dieser String wird ausgegeben.
-
-
map.forEach((key, value) => print('Die Hauptstadt von $key ist $value.'));
Es werden alle Schlüssel-Wert-Paare in einer Schleife mit der Callbackfunktion behandelt, die den SatzDie Hauptstadt von $key ist $value.
ausgibt. - Die Methode
removeWhere()
löscht alle Elemente, für die die Callbackfunktion den Werttrue
zurückgibt. Die Callbackfunktion hat als Parameter den Schlüssel und den Wert des aktuellen Map-Eintrags.
void say(String prefix, Map map){ print(map.keys.fold('= $prefix:', (prev, element) => '$prev\n $element: ${map[element]}')); } void main(){ final map = <String, String>{ 'Deutschland' : 'Berlin', 'Italien': 'Rom', 'Österreich': 'Wien' }; final map2 = <String, String>{ 'Deutschland' : 'deutsch', 'Italien': 'italienisch', 'Österreich': 'deutsch' }; say('Land und Hauptstadt', map); say('Land und Sprache', map2); final map3 = map.map((key, value) => MapEntry(map[key], map2[key])); say('Hauptstadt und Sprache', map3); }
- Aus den zwei Maps
map
undmap2
wird eine neue Mapmap3
erzeugt. -
map.map()
ruft die Callbackfunktion für jedes Schlüssel-Wert-Paar auf. Diese Callbackfunktion baut aus dem Wert vonmap
und dem Wert vonmap2
ein neues Schlüssel-Wert-Paar fürmap3
.
void say(String prefix, Map map){ print(map.keys.fold('= $prefix:', (prev, element) => '$prev\n $element: ${map[element]}')); } void main(){ final scores = <String, int>{ 'Bob': 30, 'Charly': 40, 'Eve': 22}; say('Incomplete', scores); for (var user in ['Adam', 'Bob', 'Charly', 'Dave', 'Eve']){ scores.putIfAbsent(user, () => 0); } say('Complete', scores); }
- Die Orginalliste hat drei Einträge.
-
for (var user in ['Adam', 'Bob', 'Charly', 'Dave', 'Eve'])
Hier tauchen zwei zusätzliche Benutzer auf: 'Adam' und 'Dave'. -
scores.putIfAbsent(user, () => 0)
Für die zusätzlichen Benutzer, wenn also der Schlüssel noch nicht existiert, werden neue Einträge generiert, mit demuser
als Schlüssel und dem Wert 0.