Menu
Coddy logo textTech

Lambdas con parámetros

Parte de la sección Lógica y Flujo del Journey de C++ de Coddy — lección 43 de 56.

Ahora que entiendes la sintaxis básica de las lambdas, hagamos que las lambdas sean más útiles añadiendo parámetros. Al igual que las funciones regulares, las lambdas pueden aceptar valores de entrada para trabajar con ellos.

Para añadir parámetros a una lambda, colóquelos dentro de los paréntesis después de la cláusula de captura:

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

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

La sintaxis de los parámetros funciona exactamente igual que los parámetros de una función normal: especificas el tipo seguido del nombre del parámetro. Puedes tener múltiples parámetros separados por comas, tal como se muestra arriba.

También puedes llamar a una lambda con parámetros inmediatamente sin almacenarla:

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

Esta capacidad de aceptar parámetros hace que las lambdas sean mucho más flexibles y reutilizables, permitiéndote crear pequeñas funciones que pueden procesar diferentes valores de entrada cada vez que son llamadas.

challenge icon

Desafío

Fácil

Crea un programa que demuestre las expresiones lambda con parámetros construyendo una calculadora sencilla que realice diferentes operaciones matemáticas. Este desafío pondrá a prueba tu comprensión sobre cómo definir expresiones lambda que acepten valores de entrada y trabajen con ellos.

Se proporcionarán las siguientes entradas:

  • Dos enteros num1 y num2 que representan los números para los cálculos
  • Un carácter operation que representa la operación matemática a realizar

Tu programa debe:

  1. Crear una expresión lambda llamada add que tome dos parámetros enteros e imprima su suma en el formato Sum: [result]
  2. Crear una expresión lambda llamada subtract que tome dos parámetros enteros e imprima su diferencia en el formato Difference: [result]
  3. Crear una expresión lambda llamada multiply que tome dos parámetros enteros e imprima su producto en el formato Product: [result]
  4. Leer los dos números y el carácter de operación de la entrada
  5. Basándose en el carácter de operación, llamar a la lambda apropiada con los dos números

El carácter de operación será uno de los siguientes:

  • + para la suma (llama a la lambda add)
  • - para la resta (llama a la lambda subtract)
  • * para la multiplicación (llama a la lambda multiply)

Utiliza el siguiente formato de salida exacto basado en la operación:

Para la suma:

Sum: [result]

Para la resta:

Difference: [result]

Para la multiplicación:

Product: [result]

Recuerda que los parámetros de la lambda se definen dentro de los paréntesis después de la cláusula de captura, utilizando la misma sintaxis que los parámetros de una función regular. Almacena cada lambda en una variable utilizando la palabra clave auto, luego llama a la lambda adecuada basándote en el carácter de operación de entrada utilizando una sentencia if-else o una sentencia switch.

Hoja de referencia

Las expresiones lambda pueden aceptar parámetros colocándolos dentro de paréntesis después de la cláusula de captura:

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

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

La sintaxis de los parámetros funciona exactamente igual que los parámetros de una función normal: especifique el tipo seguido del nombre del parámetro. Los parámetros múltiples se separan por comas.

También puede llamar a una lambda con parámetros inmediatamente sin almacenarla:

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

Pruébalo tú mismo

#include <iostream>
using namespace std;

int main() {
    // Leer entrada
    int num1, num2;
    char operation;
    cin >> num1 >> num2 >> operation;
    
    // TODO: Crear expresiones lambda para las operaciones de suma, resta y multiplicación
    // TODO: Usar una sentencia if-else o switch para llamar a la lambda apropiada según la operación
    
    return 0;
}
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Lógica y Flujo