Menu
Coddy logo textTech

Lambdas avec paramètres

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

Maintenant que vous comprenez la syntaxe de base des lambdas, rendons les lambdas plus utiles en ajoutant des paramètres. Tout comme les fonctions régulières, les lambdas peuvent accepter des valeurs d'entrée avec lesquelles travailler.

Pour ajouter des paramètres à une lambda, placez-les à l'intérieur des parenthèses après la clause de capture :

auto addNumbers = [](int a, int b) {
    std::cout << "Sum: " << (a + b) << std::endl;
};

addNumbers(5, 3);  // Affiche : Sum: 8

La syntaxe des paramètres fonctionne exactement comme les paramètres de fonction réguliers - vous spécifiez le type suivi du nom du paramètre. Vous pouvez avoir plusieurs paramètres séparés par des virgules, tout comme illustré ci-dessus.

Vous pouvez également appeler une lambda avec des paramètres immédiatement sans la stocker :

[](int x, int y) {
    std::cout << "Product: " << (x * y) << std::endl;
}(4, 7);  // Affiche : Product: 28

Cette capacité à accepter des paramètres rend les lambdas beaucoup plus flexibles et réutilisables, vous permettant de créer de petites fonctions qui peuvent traiter différentes valeurs d'entrée à chaque fois qu'elles sont appelées.

challenge icon

Défi

Facile

Créez un programme qui illustre les expressions lambda avec paramètres en construisant une calculatrice simple qui effectue différentes opérations mathématiques. Ce défi testera votre compréhension de la manière de définir des expressions lambda qui acceptent des valeurs d'entrée et travaillent avec elles.

Les entrées suivantes seront fournies :

  • Deux entiers num1 et num2 représentant les nombres pour les calculs
  • Un caractère operation représentant l'opération mathématique à effectuer

Votre programme doit :

  1. Créer une expression lambda nommée add qui prend deux paramètres entiers et affiche leur somme au format Sum: [result]
  2. Créer une expression lambda nommée subtract qui prend deux paramètres entiers et affiche leur différence au format Difference: [result]
  3. Créer une expression lambda nommée multiply qui prend deux paramètres entiers et affiche leur produit au format Product: [result]
  4. Lire les deux nombres et le caractère d'opération à partir de l'entrée
  5. En fonction du caractère d'opération, appeler la lambda appropriée avec les deux nombres

Le caractère d'opération sera l'un des suivants :

  • + pour l'addition (appeler la lambda add)
  • - pour la soustraction (appeler la lambda subtract)
  • * pour la multiplication (appeler la lambda multiply)

Utilisez le format de sortie exact suivant selon l'opération :

Pour l'addition :

Sum: [result]

Pour la soustraction :

Difference: [result]

Pour la multiplication :

Product: [result]

N'oubliez pas que les paramètres lambda sont définis à l'intérieur des parenthèses après la clause de capture, en utilisant la même syntaxe que les paramètres de fonction classiques. Stockez chaque lambda dans une variable à l'aide du mot-clé auto, puis appelez la lambda appropriée en fonction du caractère d'opération d'entrée à l'aide d'une instruction if-else ou d'une instruction switch.

Aide-mémoire

Les expressions lambda peuvent accepter des paramètres en les plaçant entre parenthèses après la clause de capture :

auto addNumbers = [](int a, int b) {
    std::cout << "Sum: " << (a + b) << std::endl;
};

addNumbers(5, 3);  // Affiche : Sum: 8

La syntaxe des paramètres fonctionne exactement comme celle des paramètres de fonction classiques - spécifiez le type suivi du nom du paramètre. Les paramètres multiples sont séparés par des virgules.

Vous pouvez également appeler une lambda avec des paramètres immédiatement sans la stocker :

[](int x, int y) {
    std::cout << "Product: " << (x * y) << std::endl;
}(4, 7);  // Affiche : Product: 28

Essayez vous-même

#include <iostream>
using namespace std;

int main() {
    // Lire l'entrée
    int num1, num2;
    char operation;
    cin >> num1 >> num2 >> operation;
    
    // TODO: Créer des expressions lambda pour les opérations d'addition, de soustraction et de multiplication
    // TODO: Utiliser une instruction if-else ou switch pour appeler la lambda appropriée en fonction de l'opération
    
    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