Fonctions anonymes
Fait partie de la section Logique & Flux du Journey Dart de Coddy — leçon 44 sur 65.
Jusqu'à présent, vous avez créé des fonctions avec des noms tels que calculateTotal ou printMessage. Mais parfois, vous avez besoin d'une fonction simple pour une seule tâche spécifique, et lui donner un nom semble superflu. C'est là que les fonctions anonymes s'avèrent utiles.
Une fonction anonyme est une fonction sans nom. Vous la définissez exactement là où vous en avez besoin, ce qui rend votre code plus concis pour des opérations courtes et ponctuelles. La syntaxe est simple : il vous suffit d'écrire la liste des paramètres suivie du corps de la fonction :
(parameter) {
// corps de la fonction
}Les fonctions anonymes sont particulièrement utiles avec les méthodes de liste. Par exemple, au lieu de créer une fonction nommée distincte pour afficher chaque élément d'une liste, vous pouvez utiliser une fonction anonyme directement avec la méthode forEach :
List<String> fruits = ['apple', 'banana', 'orange'];
fruits.forEach((fruit) {
print(fruit);
});Cette approche permet de garder votre code propre et concis, surtout lorsque la logique de la fonction est simple et ne sera pas réutilisée ailleurs dans votre programme.
Défi
FacileCréez un programme qui traite une liste de noms d'employés à l'aide de fonctions anonymes. Votre programme démontrera comment utiliser des fonctions anonymes avec la méthode forEach pour effectuer différentes opérations sur chaque élément de la liste.
- Lisez une chaîne de caractères en entrée contenant des noms d'employés séparés par des virgules (par exemple,
"Alice,Bob,Charlie,Diana") - Divisez la chaîne d'entrée en une liste de noms individuels à l'aide de la méthode
split() - Utilisez la méthode
forEachavec une fonction anonyme pour afficher chaque nom d'employé avec un message de bienvenue - Utilisez la méthode
forEachavec une autre fonction anonyme pour afficher chaque nom d'employé en majuscules - Utilisez la méthode
forEachavec une troisième fonction anonyme pour afficher chaque nom d'employé ainsi que son nombre de caractères
Par exemple, si l'entrée est "Alice,Bob,Charlie", votre programme doit afficher :
Processing employee list: Alice,Bob,Charlie
===========================================
Welcome Messages:
Welcome to the team, Alice!
Welcome to the team, Bob!
Welcome to the team, Charlie!
===========================================
Names in Uppercase:
ALICE
BOB
CHARLIE
===========================================
Name Lengths:
Alice has 5 characters
Bob has 3 characters
Charlie has 7 charactersSi l'entrée est "John,Sarah", votre programme doit afficher :
Processing employee list: John,Sarah
===========================================
Welcome Messages:
Welcome to the team, John!
Welcome to the team, Sarah!
===========================================
Names in Uppercase:
JOHN
SARAH
===========================================
Name Lengths:
John has 4 characters
Sarah has 5 charactersVotre programme doit utiliser trois appels distincts à la méthode forEach, chacun avec sa propre fonction anonyme. Les fonctions anonymes doivent être définies en ligne sans leur donner de noms. Chaque fonction anonyme doit prendre un seul paramètre représentant le nom de l'employé actuel et effectuer l'opération spécifiée. Utilisez l'interpolation de chaîne pour formater les messages de sortie exactement comme indiqué ci-dessus.
Aide-mémoire
Une fonction anonyme est une fonction sans nom, définie exactement là où vous en avez besoin. La syntaxe utilise une liste de paramètres suivie du corps de la fonction :
(parameter) {
// corps de la fonction
}Les fonctions anonymes sont particulièrement utiles avec les méthodes de liste comme forEach :
List<String> fruits = ['apple', 'banana', 'orange'];
fruits.forEach((fruit) {
print(fruit);
});Cette approche permet de garder le code propre et concentré pour des opérations simples et ponctuelles qui ne seront pas réutilisées ailleurs.
Essayez vous-même
import 'dart:io';
void main() {
// Lire la chaîne d'entrée contenant les noms des employés
String? input = stdin.readLineSync();
// Diviser l'entrée en une liste de noms
List<String> employeeNames = input!.split(',');
// Afficher le message de traitement initial
print('Processing employee list: $input');
print('===========================================');
// TODO: Écrivez votre code ci-dessous
// Utiliser forEach avec des fonctions anonymes pour :
// 1. Afficher des messages de bienvenue
// 2. Afficher les noms en majuscules
// 3. Afficher la longueur des noms
}Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Logique & Flux
1Manipulation avancée des listes
Propriétés de liste : first & lastÉtat de la liste : isEmpty & isNotEmptyInverser une listeAjouter à une liste : insertSuppression dans une liste : removeWhereRechercher dans une liste : indexOfTrier une listeMélanger une listeRécapitulatif - Organisateur de liste4Manipulation avancée des Maps
Itérer sur une MapVérifier les clés et les valeursPropriétés de Map : keys & valuesAjout conditionnel : putIfAbsentSupprimer des entrées d'une MapMaps imbriquéesRécapitulatif - Mise à jour de l'inventaire2Opérations fonctionnelles sur les listes
Transformer avec 'map'Filtrer avec 'where'Utiliser '.toList()'Vérifier des conditions avec 'any'Conditions avec 'every'Trouver avec 'firstWhere'Récapitulatif - Filtrage de données3Les Ensembles
Qu'est-ce qu'un ensemble ?Créer un ensembleAjouter et supprimer des éléments d'un ensembleVérifier la présence d'éléments dans un ensembleConvertir une liste en ensembleUnion d'ensemblesIntersection d'ensemblesDifférence d'ensemblesRécapitulatif - Liste d'invités uniques