Menu
Coddy logo textTech

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 potente característica de C++ que te permite crear funciones pequeñas y anónimas justo donde las necesitas. Piensa en ellas como mini-funciones que puedes definir y usar sin tener que escribir una declaración de función por separado.

La sintaxis básica para una expresión lambda sigue este patrón: [](){}. Los corchetes [] se denominan cláusula de captura, los paréntesis () contienen los parámetros (al igual que las funciones normales) y las llaves {} contienen el cuerpo de la función.


La cláusula de captura controla qué variables del ámbito circundante puede utilizar la lambda. Las formas más comunes son:

[=] — captura todas las variables locales por valor (la lambda obtiene su propia copia)
[&] — captura todas las variables locales por referencia (la lambda accede a las originales)
[] — no captura nada (la lambda no puede usar ninguna variable externa)

Aquí tienes cómo crear y llamar a una lambda simple:

auto myLambda = []() {
    std::cout << "Hello from Lambda!" << std::endl;
};

myLambda();  // Llamar a la función lambda

También puedes definir y ejecutar una lambda inmediatamente sin almacenarla en una variable:

[]() {
    std::cout << "Immediate execution!" << std::endl;
}();

Las expresiones lambda son particularmente útiles para funciones cortas y de un solo uso que no deseas definir por separado. Hacen que tu código sea más conciso y mantienen la lógica relacionada unida.

challenge icon

Desafío

Fácil

Crea un programa que demuestre la sintaxis básica y la ejecución de expresiones lambda. Este desafío pondrá a prueba tu comprensión sobre cómo definir y llamar funciones lambda simples sin parámetros.

Tu programa debe:

  1. Crear una expresión lambda que imprima Hello from Lambda!
  2. Almacenar esta lambda en una variable utilizando la palabra clave auto
  3. Llamar a la función lambda para ejecutarla
  4. Crear una segunda expresión lambda que imprima Lambda executed successfully!
  5. Ejecutar esta segunda lambda inmediatamente sin almacenarla en una variable

Utiliza exactamente el siguiente formato de salida:

Hello from Lambda!
Lambda executed successfully!

Recuerda que las expresiones lambda utilizan 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 luego llamarla con variableName();. Para la ejecución inmediata, puedes usar la sintaxis [](){...}(); que define y llama a la lambda en una sola sentencia.

Hoja de referencia

Las expresiones lambda son funciones anónimas que pueden definirse en línea. Utilizan la sintaxis [](){} donde:

  • [] - cláusula de captura (controla el acceso a variables externas)
  • () - parámetros
  • {} - cuerpo de la función

Formas comunes de la cláusula de captura:

  • [] - no capturar nada
  • [=] - capturar todas las variables externas por valor
  • [&] - capturar todas las variables externas por referencia

Almacenar y llamar a una lambda:

auto myLambda = []() {
    std::cout << "Hello from Lambda!" << std::endl;
};

myLambda();  // Call the lambda function

Ejecutar una lambda inmediatamente:

[]() {
    std::cout << "Immediate execution!" << std::endl;
}();

Pruébalo tú mismo

#include <iostream>
using namespace std;

int main() {
    // TODO: Escribe tu código a continuación
    // Crea una expresión lambda que imprima "Hello from Lambda!"
    // Almacénala en una variable usando la palabra clave auto
    
    // Llama a la función lambda
    
    // Crea una segunda lambda que imprima "Lambda executed successfully!"
    // Ejecútala inmediatamente sin almacenarla en una variable
    
    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