Introducción a expresiones lambda
Parte de la sección Lógica y Flujo del Journey de C++ de Coddy. Lección 42 de 56.
Las expresiones lambda son una característica potente de C++ que te permite crear pequeñas y anónimas function justo donde las necesitas. Piensa en ellas como mini-function que puedes definir y usar sin tener que escribir una declaración de function separada.
La sintaxis básica de una expresión lambda sigue este patrón: [](){}. Los corchetes [] se denominan cláusula de captura, los paréntesis () contienen parámetros (al igual que las function habituales) y las llaves {} contienen el cuerpo de la function.
La cláusula de captura controla qué variable del ámbito circundante puede usar la lambda. Las formas más comunes son:
[=] — captura todas las variable locales por valor (la lambda obtiene su propia copy)[&] — captura todas las variable locales por referencia (la lambda accede a las originales)[] — no captura nada (la lambda no puede usar ninguna variable externa)Así es como se crea y se llama una lambda sencilla:
auto myLambda = []() {
std::cout << "Hello from Lambda!" << std::endl;
};
myLambda(); // Llama a la función lambdaTambién puedes definir y ejecutar un lambda inmediatamente sin almacenarlo en una variable:
[]() {
std::cout << "Immediate execution!" << std::endl;
}();Las expresiones lambda son especialmente útiles para funciones breves y de un solo uso que no quieres definir por separado. Hacen que tu código sea más conciso y mantienen la lógica relacionada junta.
Desafío
FácilCrea un programa que demuestre la sintaxis básica y la ejecución de expresiones lambda. Este desafío pondrá a prueba tu comprensión de cómo definir y llamar funciones lambda simples sin parámetros.
Tu programa debe:
- Crear una expresión lambda que imprima
Hello from Lambda! - Almacenar esta lambda en una variable usando la palabra clave
auto - Llamar a la función lambda para ejecutarla
- Crear una segunda expresión lambda que imprima
Lambda executed successfully! - Ejecutar esta segunda lambda inmediatamente sin almacenarla en una variable
Usa el siguiente formato de salida exacto:
Hello from Lambda!
Lambda executed successfully!Recuerda que las expresiones lambda usan la sintaxis [](){}, donde los corchetes [] son la cláusula de captura, los paréntesis () contienen los parámetros (vacíos para este desafío) y las llaves {} contienen el cuerpo de la función. Puedes almacenar una lambda en una variable usando auto variableName = [](){...}; y después llamarla con variableName();. Para la ejecución inmediata, puedes usar la sintaxis [](){...}();, que define y llama a la lambda en una sola instrucción.
Pruébalo tú mismo
#include <iostream>
using namespace std;
int main() {
// TODO: Escribe tu código debajo
// Create a lambda expression that prints "Hello from Lambda!"
// Almacénalo en una variable usando la palabra clave auto
// Llama a la función lambda
// Create a second lambda that prints "Lambda executed successfully!"
// Ejecútalo inmediatamente sin almacenarlo en una variable
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