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 agregar parámetros a una lambda, colócalos 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 inmediatamente a una lambda con parámetros 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 mediante la creación de una calculadora sencilla que realice diferentes operaciones matemáticas. Este desafío pondrá a prueba tu comprensión de 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 que se debe realizar

Tu programa debe:

  1. Crear una expresión lambda llamada add que reciba dos parámetros enteros e imprima su suma con el formato Sum: [result]
  2. Crear una expresión lambda llamada subtract que reciba dos parámetros enteros e imprima su diferencia con el formato Difference: [result]
  3. Crear una expresión lambda llamada multiply que reciba dos parámetros enteros e imprima su producto con el formato Product: [result]
  4. Leer los dos números y el carácter de operación de la entrada
  5. Según el carácter de operación, llamar a la lambda correspondiente 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)

Usa el siguiente formato exacto de salida según 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 una lambda se definen dentro de los paréntesis después de la cláusula de captura, usando la misma sintaxis que los parámetros de una función normal. Almacena cada lambda en una variable usando la palabra clave auto y, después, llama a la lambda correspondiente según el carácter de operación de entrada usando una instrucción if-else o una instrucción switch.

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

Practica por tu cuenta: Compilador de C++ online