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: 8La 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: 28Esta 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.
Desafío
FácilCrea 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
num1ynum2que representan los números para los cálculos - Un carácter
operationque representa la operación matemática que se debe realizar
Tu programa debe:
- Crear una expresión lambda llamada
addque reciba dos parámetros enteros e imprima su suma con el formatoSum: [result] - Crear una expresión lambda llamada
subtractque reciba dos parámetros enteros e imprima su diferencia con el formatoDifference: [result] - Crear una expresión lambda llamada
multiplyque reciba dos parámetros enteros e imprima su producto con el formatoProduct: [result] - Leer los dos números y el carácter de operación de la entrada
- 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 lambdaadd)-para la resta (llama a la lambdasubtract)*para la multiplicación (llama a la lambdamultiply)
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;
}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
1Punteros y memoria
¿Qué es un puntero?Operador de direcciónOperador de desreferenciaPunteros nulosPunteros y arraysMemoria dinámica con 'new'Liberar memoria con 'delete'Resumen: Práctica de punteros4Mapas (Pares Clave-Valor)
Introducción a std::mapCrear un MapaAcceder y Modificar ValoresComprobar ClavesEliminar ParesIterar sobre un MapaResumen - Frecuencia de Palabras7Funciones avanzadas
Paso por referenciaIntroducción a expresiones lambdaLambdas con parámetrosLambdas con valores de retornoIntroducción a la recursividadFactorial recursivoOrdenamiento con lambda2Vectores (Arrays dinámicos)
Introducción a std::vectorCreación de un VectorAgregar elementosAcceder a los elementosTamaño del VectorIterar con un bucle ForBucle For basado en rangosEliminar elementosResumen - Operaciones con Vectores5Proyecto: Herramienta de inventario
Configuración del proyectoAgregar y actualizar artículos3Proyecto: Herramienta de lista de tareas
Descripción general del proyectoAñadir una tareaPractica por tu cuenta: Compilador de C++ online