Menu
Coddy logo textTech

Lambdas com Parâmetros

Parte da seção Lógica & Fluxo do Journey de C++ da Coddy — lição 43 de 56.

Agora que você entende a sintaxe básica de lambdas, vamos tornar as lambdas mais úteis adicionando parâmetros. Assim como funções regulares, as lambdas podem aceitar valores de entrada para trabalhar.

Para adicionar parâmetros a uma lambda, coloque-os dentro dos parênteses após a cláusula de captura:

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

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

A sintaxe de parâmetros funciona exatamente como parâmetros de função regulares - você especifica o tipo seguido pelo nome do parâmetro. Você pode ter múltiplos parâmetros separados por vírgulas, exatamente como mostrado acima.

Você também pode chamar uma lambda com parâmetros imediatamente sem armazená-la:

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

Essa capacidade de aceitar parâmetros torna as lambdas muito mais flexíveis e reutilizáveis, permitindo que você crie pequenas funções que podem processar diferentes valores de entrada cada vez que são chamadas.

challenge icon

Desafio

Fácil

Crie um programa que demonstre expressões lambda com parâmetros construindo uma calculadora simples que realiza diferentes operações matemáticas. Este desafio testará sua compreensão de como definir expressões lambda que aceitam valores de entrada e trabalham com eles.

As seguintes entradas serão fornecidas:

  • Dois inteiros num1 e num2 representando os números para os cálculos
  • Um caractere operation representando a operação matemática a ser realizada

Seu programa deve:

  1. Criar uma expressão lambda chamada add que recebe dois parâmetros inteiros e imprime a soma deles no formato Sum: [result]
  2. Criar uma expressão lambda chamada subtract que recebe dois parâmetros inteiros e imprime a diferença entre eles no formato Difference: [result]
  3. Criar uma expressão lambda chamada multiply que recebe dois parâmetros inteiros e imprime o produto deles no formato Product: [result]
  4. Ler os dois números e o caractere de operação da entrada
  5. Com base no caractere de operação, chamar a lambda apropriada com os dois números

O caractere de operação será um dos seguintes:

  • + para adição (chame a lambda add)
  • - para subtração (chame a lambda subtract)
  • * para multiplicação (chame a lambda multiply)

Use o seguinte formato de saída exato com base na operação:

Para adição:

Sum: [result]

Para subtração:

Difference: [result]

Para multiplicação:

Product: [result]

Lembre-se de que os parâmetros da lambda são definidos dentro dos parênteses após a cláusula de captura, usando a mesma sintaxe dos parâmetros de funções regulares. Armazene cada lambda em uma variável usando a palavra-chave auto, e então chame a lambda apropriada com base no caractere de operação de entrada usando uma instrução if-else ou switch.

Folha de consulta

Expressões lambda podem aceitar parâmetros colocando-os dentro de parênteses após a cláusula de captura:

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

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

A sintaxe dos parâmetros funciona exatamente como os parâmetros de funções regulares - especifique o tipo seguido pelo nome do parâmetro. Múltiplos parâmetros são separados por vírgulas.

Você também pode chamar uma lambda com parâmetros imediatamente sem armazená-la:

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

Experimente você mesmo

#include <iostream>
using namespace std;

int main() {
    // Ler entrada
    int num1, num2;
    char operation;
    cin >> num1 >> num2 >> operation;
    
    // TODO: Criar expressões lambda para as operações de somar, subtrair e multiplicar
    // TODO: Usar uma instrução if-else ou switch para chamar a lambda apropriada com base na operação
    
    return 0;
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Lógica & Fluxo