Menu
Coddy logo textTech

Introduction aux expressions Lambda

Fait partie de la section Logique et Flux du Journey C++ de Coddy — leçon 42 sur 56.

Les expressions lambda sont une fonctionnalité puissante de C++ qui vous permet de créer de petites fonctions anonymes exactement là où vous en avez besoin. Considérez-les comme des mini-fonctions que vous pouvez définir et utiliser sans avoir à écrire une déclaration de fonction séparée.

La syntaxe de base d'une expression lambda suit ce modèle : [](){}. Les crochets [] sont appelés la clause de capture, les parenthèses () contiennent les paramètres (tout comme les fonctions classiques), et les accolades {} contiennent le corps de la fonction.


La clause de capture contrôle quelles variables de la portée environnante la lambda peut utiliser. Les formes les plus courantes sont :

[=] — capturer toutes les variables locales par valeur (la lambda obtient sa propre copie)
[&] — capturer toutes les variables locales par référence (la lambda accède aux originaux)
[] — ne rien capturer (la lambda ne peut utiliser aucune variable extérieure)

Voici comment créer et appeler une lambda simple :

auto myLambda = []() {
    std::cout << "Hello from Lambda!" << std::endl;
};

myLambda();  // Appeler la fonction lambda

Vous pouvez également définir et exécuter une lambda immédiatement sans la stocker dans une variable :

[]() {
    std::cout << "Immediate execution!" << std::endl;
}();

Les expressions lambda sont particulièrement utiles pour les fonctions courtes et à usage unique que vous ne souhaitez pas définir séparément. Elles rendent votre code plus concis et maintiennent la logique associée à proximité.

challenge icon

Défi

Facile

Créez un programme qui démontre la syntaxe de base et l'exécution des expressions lambda. Ce défi testera votre compréhension de la manière de définir et d'appeler des fonctions lambda simples sans paramètres.

Votre programme doit :

  1. Créer une expression lambda qui affiche Hello from Lambda!
  2. Stocker cette lambda dans une variable en utilisant le mot-clé auto
  3. Appeler la fonction lambda pour l'exécuter
  4. Créer une deuxième expression lambda qui affiche Lambda executed successfully!
  5. Exécuter cette deuxième lambda immédiatement sans la stocker dans une variable

Utilisez exactement le format de sortie suivant :

Hello from Lambda!
Lambda executed successfully!

Rappelez-vous que les expressions lambda utilisent la syntaxe [](){} où les crochets [] sont la clause de capture, les parenthèses () contiennent les paramètres (vides pour ce défi), et les accolades {} contiennent le corps de la fonction. Vous pouvez stocker une lambda dans une variable en utilisant auto variableName = [](){...}; puis l'appeler avec variableName();. Pour une exécution immédiate, vous pouvez utiliser la syntaxe [](){...}(); qui définit et appelle la lambda en une seule instruction.

Aide-mémoire

Les expressions lambda sont des fonctions anonymes qui peuvent être définies en ligne. Elles utilisent la syntaxe [](){} où :

  • [] - clause de capture (contrôle l'accès aux variables extérieures)
  • () - paramètres
  • {} - corps de la fonction

Formes courantes de clauses de capture :

  • [] - ne rien capturer
  • [=] - capturer toutes les variables extérieures par valeur
  • [&] - capturer toutes les variables extérieures par référence

Stocker et appeler une lambda :

auto myLambda = []() {
    std::cout << "Hello from Lambda!" << std::endl;
};

myLambda();  // Appeler la fonction lambda

Exécuter une lambda immédiatement :

[]() {
    std::cout << "Immediate execution!" << std::endl;
}();

Essayez vous-même

#include <iostream>
using namespace std;

int main() {
    // TODO: Écrivez votre code ci-dessous
    // Créer une expression lambda qui affiche "Hello from Lambda!"
    // La stocker dans une variable en utilisant le mot-clé auto
    
    // Appeler la fonction lambda
    
    // Créer une deuxième lambda qui affiche "Lambda executed successfully!"
    // L'exécuter immédiatement sans la stocker dans une variable
    
    return 0;
}
quiz iconTestez-vous

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 et Flux